matlab自我学习Word文档下载推荐.docx
《matlab自我学习Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《matlab自我学习Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
a)
x(k
(1))
k=
5
6
7
8
9
10
ans=
0.6600
非线性拟和y=a*x^b+c的程序,求a,b,c.
%functionFitPaperData
formatlong
E1=rand(89,1);
E2=rand(89,1)+3;
F=inline('
p
(1).*x.^p
(2)+p(3)'
p'
x'
);
[p,r,j]=nlinfit(E1,E2,F,[1,2,3]);
p
p=
4.0651680818094960.006602435466971-0.535683924373363
我想写一个函数,输入参数是一个字符串比如是"160",函数主要目的是完成数据存储,我现在的问题是存储文件时,文件命名的问题,比如我想把输入的参数作为文件名的一部分,比如希望输出的文件名为"
temp160"
这个该怎样实现啊,谢谢!
!
i=160;
name=['
temp'
num2str(i),'
.txt'
%假设你想把当前工作区的数据存储为temp160.txt;
eval('
save(name)'
[1,2,3,NaN,5,NaN,7,8,9,10]
如何将NaN以外的8个数加起来,然后求这8个数的平均数。
a=[123nan5nan78910];
mean_a=mean(a(~isnan(a)))
在画图时
使用holdon可以保持上一幅图当前图可以画在同一个轴上,而不覆盖。
如果不使用holdon则新图会把旧图覆盖
参见helpholdon
bmpread:
从磁盘中读bmp文件
gifread:
从磁盘中读gif文件
tiffread:
从磁盘中读tiff文件
pcxread:
从磁盘中读pcx文件
图中加注文本(Addtextinthefigure)
text(x,y,’字符串’)
例:
在上图中加语句。
t=0:
pi/100:
2*pi;
y=sin(t);
plot(t,y)
axis([02*pi,-11])
xlabel('
0\leq\itt\rm\leq\pi'
FontSize'
16)
ylabel('
sin(t)'
20)
title('
正弦函数图形'
FontName'
隶书'
text(3*pi/4,sin(3*pi/4),'
\leftarrowsin(t)=0.707'
'
text(pi,sin(pi),'
\leftarrowsin(t)=0'
text(5*pi/4,sin(5*pi/4),'
sin(t)=-0.707\rightarrow'
16,...
'
HorizontalAlignment'
right'
)
句中:
leftarrow表示加一个向左的箭头
rightarrow表示加一个向右的箭头
HorizontalAlignment表示右对齐水平排列
gtext函数用于在图形窗口上用鼠标直接在指定的位置上加注文本,调用格式:
gtext(‘字符串‘)
gtext('
加的内容'
输入数在命令窗口:
F=input('
输入优先关系矩阵F:
常识:
1whos查看工作空间中变量的详细属性
2inf,Inf:
无穷大nan,NaN:
Not-a-Number,一个不定值,如0/0
3pi:
圆周率,其值为imag(log(-1))i,j:
虚部单位
4格式解释例
format短格式(缺省显示格式),同short3.1416
formatshort短格式(缺省显示格式),只显示5位3.1416
formatlong长格式,双精度数15位,单精度数7位3.14159265358979
formatshorte短格式e方式(科学计数格式)3.1416e+000
formatlonge长格式e方式3.141592653589793e+000
formatshortg短格式g方式3.1416
formatlongg长格式g方式3.14159265358979
formatcompact压缩格式
formatloose自由格式
format+/formatbank/formatrat/formathex(详情查看联机帮助)
5save将所有变量存入文件matlab.mat
savemydata将所有变量存入指定文件mydata.mat
savemydata.mat将所有变量存入文件mydata.mat
6loadmydata载入数据文件中的所有变量
loadmydataAx从数据文件中提取指定变量
7clearAx清除指定的变量
8可以先输入命令的前几个字符,再按上下键缩小搜索范围
命令补全功能:
Tab键用Esc键删除命令行
9常用函数有:
eye(size(A))产生与A矩阵同阶的单位矩阵
zeros(m,n)产生0矩阵
ones(m,n)产生幺矩阵
rand(m,n)产生随机元素的矩阵
Size(a)返回包含两个元素的向量。
Length(a)返回向量的长度。
zeros(m,n)生成一个m行n列的零矩阵,m=n时可简写为zeros(n)
ones(m,n)生成一个m行n列的元素全为1的矩阵,
m=n时可写为ones(n)
eye(m,n)生成一个主对角线全为1的m行n列矩阵,
m=n时可简写为eye(n),即为n维单位矩阵
diag(X)若X是矩阵,则diag(X)为X的主对角线向量
若X是向量,diag(X)产生以X为主对角线的对角矩阵
tril(A)提取一个矩阵的下三角部分
triu(A)提取一个矩阵的上三角部分
rand(m,n)产生0~1间均匀分布的随机矩阵m=n时简写为rand(n)
randn(m,n)产生均值为0,方差为1的标准正态分布随机矩阵
m=n时简写为randn(n)
其它特殊矩阵生成函数:
magic、hilb、pascal
10Matlab图形可视化
1)在同一图形窗口中用命令plot(x,y)绘出正弦余弦函数的图形。
x=0:
0.01:
y=[sin(x);
cos(x)];
plot(x,y)
2)二维函数曲线专用命令fplot
3)
subplot(m,n,i)
其含义为:
把图形窗口分割为m行n列子窗口,然后选定第i个窗口为当前窗口。
subplot命令不仅用于二维图形,对三维图形一样适用。
其本质是将figure窗口分为几个区域,再在每个区域内分别绘图。
4)axis([xmin,xmax,ymin,ymax,zmin,zmax])
5)三维曲线绘图命令
三维函数plot3主要用来表现单参数的三维曲线,与二维绘图函数plot相比,只多了第三维数据。
其调用格式为:
plot3(X1,Y1,Z1,s1,X2,Y2,Z2,s2,…)
参数的含义如下:
Xn、Yn、Zn:
第一到三维数据,是尺寸相等的向量/矩阵;
s、s1、s2:
是字符串,用来设置线型、颜色、数据点标记。
0.1:
8*pi;
plot3(sin(t),cos(t),t)
title(’绘制螺旋线’)%用命令title对图形主题进行标注
xlabel(’sin(t)’,’FontWeight’,’bold’,’FontAngle’,’italic’)
ylabel(’cos(t)’,’FontWeight’,’bold’,’FontAngle’,’italic’)
zlabel(’t’,’FontWeight’,’bold’,’FontAngle’,’italic’)
%命令zlabel用来指定z轴的数据名称
gridon
6)平面网格点的生成
函数命令meshgrid用来生成x-y平面上的网格点矩阵。
调用形式为:
[X,Y]=meshgrid(x,y)
[X,Y]=meshgrid(x)等价于[X,Y]=meshgrid(x,x)
参数含义如下:
x:
是区间[x0,xm]上分划的向量;
y:
是区间[y0,yn]上分划的向量;
X,Y:
输出变量矩阵,矩阵X的行向量都是向量x,矩阵Y的列向量都是向量y。
函数meshgrid将由两个向量决定的区域转换为对应的网格点矩阵。
[X,Y]=meshgrid(-2:
2:
2,-2:
2);
[X,Y]%将划分结果输出至矩阵
ans=
-202-2-2-2
-202000
-202222
Z=X.*exp(-X.^2-Y.^2);
%计算网格点上的函数值赋予变量
Z
Z=
-0.000700.0007
-0.036600.0366
-0.000700.0007
10,利用三维网格表面命令surf绘制图形。
z=peaks;
%绘制山峰的图像,将函数值赋予变量z
surf(z)%对山峰的图像进行着色处理
shadinginterp%函数shading改变着色方式
11,a.柱面的表达cylinder
cylinder命令中,柱面的轴线定义为z轴,只要给出母线的描述就可完成一个柱面。
调用格式为:
[X,Y,Z]=cylinder(R,N);
[X,Y,Z]=cylinder(R):
缺省值N=20;
[X,Y,Z]=cylinder:
缺省值N=20,R=[1,1]。
R:
是一描述柱面母线的向量;
N:
是旋转柱面上的分割线条数;
[X,Y,Z]:
是返回的x,y,z坐标向量。
绘制一个柱面。
t=pi:
3*pi;
r=sin(t)+t;
cylinder(r,30)
shadinginterp
12,b.球面的表达sphere
[X,Y,Z]=sphere(N):
产生一个(N+1)×
(N+1)的矩阵,然后用函数surf命令绘制一个单位的球面,N为设置分割线的条数;
[X,Y,Z]=sphere:
缺省
值N=20。
画一个球面。
[X,Y,Z]=sphere;
surf(X,Y,Z)
13,特殊图形绘制
13.1.面积图命令area
表现各个不同部分对整体所作的贡献
area(X,Y):
与plot的命令的使用方法相似,将连线图到x轴的那部分填上了颜色;
area(Y):
缺省值X=1:
SIZE(Y);
area(X,Y,LEVEL)或area(Y,LEVEL):
填色部分为由连线图到y=level的水平线之间的部分。
绘制一面积图
X=-2:
2;
Y=[3,5,2,4,1;
5,4,2,3,5;
3,4,5,2,1];
area(X'
Y'
)
legend('
因素1'
因素2'
因素3'
13.2用绘制直方图的几种命令绘制直方图。
subplot(2,2,1)
bar(X,Y'
r'
y'
colormap(cool)
subplot(2,2,2)
barh(X,Y'
grouped'
subplot(2,2,3)
stacked'
\Sigmay'
colormap(summer)
13.3绘制三维直方图。
bar3(X,Y'
zlabel('
bar3h(X,Y'
13.3.饼图命令pie
饼图又叫扇形图,用于显示向量中元素所占向量元素总和的百分比。
pie和pie3分别用于绘制二维和三维饼图。
调用格式:
pie(X):
向量X的饼图。
把X的每一个元素在所有元素总和中占的比例表达出来;
pie(X,EXPLODE):
向量EXPLODE(和向量X长度相等)用于指定饼图中抽出一部分的块(非零值对应的块);
pie(...,LABELS):
LABELS是用于标注饼图的字符串数组,其长度必须和向量X相等;
H=pie(...):
返回包括饼图和文本对象句柄。
用函数pie和pie3绘制饼图。
x=[200,360,120,400,320];
subplot(2,2,1),
pie(x,[00010])
subplot(2,2,2),
pie3(x,[00010])
subplot(2,2,3),
pie(x(2:
5))
subplot(2,2,4),
x=[0.1,0.12,0.21,0.34,0.11];
pie3(x,{'
})
13,4极坐标、柱坐标和球坐标系下绘制图形
1.极坐标系下绘制图形
ploar是直接在极坐标系下绘图的命令
ploar(THETA,RHO,S)
其中S是字符串,用来控制图形的线型。
绘制半径为2的渐开线。
rhe=2;
theta=0:
pi/20:
4*pi;
rho=rhe+theta*rhe;
polar(theta,rho,'
14,坐标轴的调整和图形的标注
14.11坐标轴调整命令
2.图形标注
坐标轴和图形标题标注
标注坐标轴x、y和z的命令函数为xlabel、ylabel和zlabel,调用格式为:
xlabel(’text’)
xlabel(’text’,’Property1’,PropertyValue1,’Property2’,PropertyValue2,...)
H=xlabel(...)返回坐标轴标注的句柄。
其中,’text’是要添加的标注文本。
’Property’是文本的属性名,’PropertyValue’是属性值(所用字体、大小、标注角度等)。
图形加标题的函数为title,其调用格式与坐标轴标注类似。
b.图例的标注
legend命令实现不同图例的说明。
legend(string1,string2,string3,...)
legend(string1,string2,string3,...,Pos)
按顺序把字符串添加到相应的曲线线型符号之后;
Pos对图例的位置作出设置和调整:
0=自动把图例置于最佳位置(和图中曲线重复最少);
1=置于图形窗口的右上角(缺省值);
2=置于图形窗口的左上角;
3=置于图形窗口的左下角;
4=置于图形窗口的右下角;
-1=置于图形窗口的右侧(外部)。
3.控制分格线
对二维和三维图形都适用。
有三种用法:
gridon:
打开分格线控制开关,以后绘制的图形都带有分格线;
gridoff:
关闭分格线控制开关,以后绘制的图形都不带分格线;
grid:
用于实现分格线绘制切换。
绘制图形,并用函数xlabel、title和legend命令进行标注。
y=sin(t);
y1=cos(t);
plot(t,y,'
:
t,y1,'
r*'
x轴(0--4\pi)'
fontsize'
12,'
fontweight'
bold'
y轴'
绘制正弦波和余弦波Pos=1'
10,'
fontangle'
italic'
text(pi,0,'
\leftarrowsin(\pi)=0'
text(pi,-1,'
\leftarrowcos(\pi)=-1'
text(pi/2,0.9,['
\uparrowsin(\pi/2)='
num2str(sin(pi/2))])
text(0,-0.6,['
绘图日期:
date])
text(0,-0.8,['
MATLAB版本:
version])
正弦波'
余弦波'
figure
(2)
plot(t,y,'
绘制正弦波和余弦波Pos=0'
0)
gridon
figure(3)
绘制正弦波和余弦波Pos=-1'
text(7*pi/2,0,'
\rightarrowcos(\pi*7/2)=0'
-1)
gridoff
二,Matlab符号运算
Matlab的符号数学工具箱可以完成几乎所有得符号运算功能。
主要包括:
符号表达式的运算,符号表达式的复合、化简,符号矩阵的运算,符号微积分、符号作图,符号代数方程求解,符号微分方程求解等
1,sym函数用来建立单个符号变量,一般调用格式为:
符号变量=sym(A)
参数A可以是一个数或数值矩阵,也可以是字符串
2,syms命令用来建立多个符号变量,一般调用格式为:
syms符号变量1符号变量2...符号变量n
3,符号表达式的建立:
(1)用sym函数直接建立符号表达式。
(2)使用已经定义的符号变量组成符号表达式。
y=sym('
sin(x)+cos(x)'
)x=sym('
y=sin(x)+cos(x)
4,按字母顺序列出符号表达式expr中的所有符号变量
f=sym('
2*w-3*y+z^2+5*a'
)findsym(f),
4,subs(f,x,a)
用a替换字符函数f中的字符变量x
a是可以是数/数值变量/表达式或字符变量/表达式
(若x是一个由多个字符变量组成的数组或矩阵,则a应该具有与x相同的形状的数组或矩阵。
如:
A=sym('
[1+x,sin(x);
5,exp(x)]'
A(1,2)%引用
A(2,2)=sym('
cos(x)'
)%重新赋值
得:
sin(x)
A=
[x+1,sin(x)]
[5,cos(x)]
三,类常见符号运算
1,因式分解
>
s=factor(100)
s=
2255
symsx;
f=x^6+1;
factor(f)
(x^2+1)*(x^4-x^2+1)
2,函数展开
symsxy;
f=sin(x+y);
expand(f)
得
cos(x)*sin(y)+cos(y)*sin(x)
3,合并同类项
collect(f,v):
按指定变量v进行合并
collect(f):
按默认变量进行合并
4,函数简化
y=simple(f):
对f尝试多种不同的算法进行简