形成的曲面网线图。
16、请在同一窗口画出两条曲线,y1=sin(x),y2=cos(x),要求添加网格线,x轴标注IndependentVariableX,y轴标注DependentVariableY1&Y2,标注标题SineandCosineCurve,在(1.5,0.3)处标注cos(x),坐标轴设定在x轴[0,2Π],y轴[-0.9,0.9]。
答案
1、>>A=[234;541;132];
>>U=[123]';
>>X=A\U
X=
-0.8148
1.6667
-0.5926
2、
>>t=[00.30.81.11.62.3]';
>>y=[0.820.720.630.600.550.50]';
>>E=[ones(size(t))exp(-t)];
>>C=E\y
C=
0.4760
0.3413
>>x=0:
0.01:
2.5;
>>z=0.4760+0.3413*exp(-x);
>>plot(t,y,'O',x,z,'r:
')
3、
>>A=[3105;0-673;0430;2-126];
>>Y=[2478]';
>>X=A\Y
X=
-4.8247
1.3944
0.4741
3.0159
4、
>>t=[12345678910]';
>>y=[4.8424.3623.7543.3683.1693.0833.0343.0163.0123.005]';
>>E1=[ones(size(t))exp(-t)];
>>C=E1\y
C=
3.1621
5.1961
>>E2=[ones(size(t))t.*exp(-t)];
>>D=E2\y
D=
3.0039
5.0046
>>x=1:
0.01:
10;
>>y1=3.1621+5.1961*exp(-x);
>>y2=3.0039+5.0046*x.*exp(-x);
>>plot(t,y,'O',x,y1,'r:
',x,y2,'b-')
>>p1=polyfit(t,y,2)
p1=
0.0411-0.63835.3937
>>p2=polyfit(t,y,3)
p2=
-0.00410.1085-0.94935.7443
>>y3=polyval(p1,x);
>>y4=polyval(p2,x);
>>plot(t,y,'O',x,y3,'r:
',x,y4,'b-')
6、
>>t=[00.20.40.60.81.02.05.0]';
>>y=[1.01.511.882.132.292.402.60-4.00]';
>>p=polyfit(t,y,4)
p=
-0.09930.7935-2.28412.98820.9995
>>E=[ones(size(t))exp(-t)];
>>C=E\y
C=
-0.0565
2.5674
>>x=0:
0.001:
5;
>>y1=-0.0565+2.5674*exp(-x);
>>y2=polyval(p,x);
>>plot(t,y,'O',x,y1,'r:
',x,y2,'b-')
7、
•001functioncompare_interp()
•002%COMPARE_INTERP不同插值运算的比较
•003
•004%原始数据
•005[x,y]=meshgrid(-3:
1:
3);
•006z=peaks(x,y);
•007figure
(1);clf
•008surfc(x,y,z);
•009title('原始数据')
•010%进行插值运算
•011[xi,yi]=meshgrid(-3:
0.25:
3);
•012zi1=interp2(x,y,z,xi,yi,'nearest');
•013zi2=interp2(x,y,z,xi,yi,'linear');
•014zi3=interp2(x,y,z,xi,yi,'cubic');
•015zi4=interp2(x,y,z,xi,yi,'spline');
•016%通过可视化结果比较
•017figure
(2)
•018subplot(2,2,1);surf(xi,yi,zi1);
•019title('二维插值-''nearest''')
•020subplot(2,2,2);surf(xi,yi,zi2);
•021title('二维插值-''linear''')
•022subplot(2,2,3);surf(xi,yi,zi3)
•023title('二维插值-''cubic''')
•024subplot(2,2,4);surf(xi,yi,zi4)
•025title('二维插值-''spline''')
•026%可视化结果
•027figure(3)
•028subplot(2,2,1);contour(xi,yi,zi1)
•029title('二维插值-''nearest''')
•030subplot(2,2,2);contour(xi,yi,zi2)
•031title('二维插值-''linear''')
•032subplot(2,2,3);contour(xi,yi,zi3)
•033title('二维插值-''cubic''')
•034subplot(2,2,4);contour(xi,yi,zi4)
•035title('二维插值-''spline'''')
•
8、
>>x=-pi:
pi/4:
pi;
>>y1=sin(x);
>>y2=cos(x);
>>y3=sinh(x);
>>y4=cosh(x);
>>plot(x,y1,'rO:
',x,y2,'b*-',x,y3,'gs--',x,y4,'k^-.')
9、
>>X=[19.322.151.6;34.270.382.4;61.482.990.8;50.554.959.1;29.439.347];
>>x=sum(X)
x=
194.8000269.5000330.9000
>>explode=[001];
>>pie(x,explode)
10、
>>t=[00.30.81.11.62.3]';
>>y=[0.50.821.141.251.351.40]';
>>E=[ones(size(t))exp(-t)t.*exp(-t)]
E=
1.00001.00000
1.00000.74080.2222
1.00000.44930.3595
1.00000.33290.3662
1.00000.20190.3230
1.00000.10030.2306
>>A=E\y
A=
1.3974
-0.8988
0.4097
>>x=0:
0.01:
2.5;
>>Y=1.3974-0.8988*exp(-x)+0.4097*x.*exp(-x);
>>plot(t,y,'O',x,Y,'r-')
11、
A=struct('name',{'江明顺','于越忠','邓拓'},'NO',{'071023','060134','050839'});
A
(1).level=struct('height','176','weight','82')
A=
1x3structarraywithfields:
name
NO
level
>>A
(2).level=struct('height','168','weight','74')
A=
1x3structarraywithfields:
name
NO
level
>>A(3).level=struct('height','182','weight','77')
A=
1x3structarraywithfields:
name
NO
level
12、
>>B=cell(1,2);
>>B{1,1}=struct('date','2007/06/04','billing',[125.7389.3;254.9538.5])
B=
[1x1struct][]
>>B{1,2}=struct('name','maggie','profession','teacher','hobby','dance')
B=
[1x1struct][1x1struct]
>>cellplot(B)
13、
>>year=1990:
2:
2010;
>>product=[75.99591.972105.711123.203131.669150.697179.323203.212226.505249.633256.344];
>>p1999=interp1(year,product,1999,’spline’)
>>x=1990:
1:
2010;
>>y=interp1(year,product,x,'spline');
>>plot(year,product,'*',x,y)
14、
>>X=[2.55.07.510.013.017.020.030.040.050.060.070.0];
>>Y=[0.290.560.771.051.361.522.002.272.813.053.253.56];(
>>P=polyfit(X,Y,3);
>>x=2.5:
0.1:
70;
>>y=polyval(P,x)
>>plot(X,Y,’O’,x,y)
>>girdon
15、
>>clear
>>x=-2:
0.2:
2;
>>y=-2:
0.2:
2;
>>[X,Y]=meshgrid(x,y);
>>Z=X.*exp(-X.^2-Y.^2);
>>mesh(X,Y,Z)
16、
》x=0:
pi/10:
2*pi;
》y1=sin(x);
》y2=cos(x);
》plot(x,y1,x,y2) ;
》gridon
》xlabel(‘IndependentVariableX’);
》ylabel(‘DependentVariableY1&Y2’);
》title(‘SineandCosineCurve’)
》text(1.5,0.3,’cos(x)’);
》axis([02*pi-0.90.9])
复习要点
矩阵产生和操作
一.diag对角矩阵和矩阵的对角化
1.x=diag(v)产生v的元素处于主对角线的对角方阵,v为n元向量。
x=diag([123])x=100
020
003
2.x=diag(v,k)k表示v的元素处在第k条对角线上
k=0主对角线y=diag([123],1)
k>0主对角线上y=0100
k<0主对角线下0020
.0003
.0000
3.v=diag(x,k)x为矩阵,v为列向量,x的第k条对角线上的元素
z=944v=diag(z)v=diag(z,-1)
2809
678v=8v=2
87
二.reshape阵列重新排列
B=reshape(A,m,n)把A重新排成m×n的矩阵B
△矩阵元素是按列存储的
A=9684D=reshape(A,4,2)D=98
247027
64
40
三.rot90矩阵旋转90o(反时针)
rot90(A,k)将A反时针旋转k*90o
A=537B1=rot90(A)区别于A'B2=A'
723B1=735B2=574
425322322
574735
B3=rot90(A,3)B3=475
223
537
四.fliplr左右翻转---列
A=9684B=fliplr(A)
2470B=4869
0742
五.flipud上下翻转---行
B=flipud(A)B=2470
9684
六.tril下三角阵
L=tril(x,k)B1=tril(A,1)
A=9684B1=9600
24702470
七.triu上三角阵
L=triu(x,k)
B2=triu(A,1)B2=0684
0070
八.cat阵列连接C=cat(dim,A,B)
将A,B在dim维连接起来
G=cat(1,B1,B2)G=9600
2470
0684
0070
九.repmat复制并平铺阵列
1.B=repmat(A,m,n)A为矩阵,将A平铺成m×n格式
A=[12;34]B=repmat(A,2,3)B=AAA
AAA
2.B=repmat(A,2,3)A为标量B=repmat(5,2,3)B=555
555
十.Meshigrid
[X,Y]=meshgrid(1:
4,1:
4)
X=
1234
1234
1234
1234
Y=
1111
2222
3333
4444
矩阵逻辑运算
1.all—矩阵所有元素是否非零
有1个或多个0→0
A为向量
All(A)
A为矩阵—按列
a=[12;04]b=au(0)b=01
2.any—测试任意非零值
只要有不是0→1
B=any(A)
所有都为0→0
a=[120;400;050]any(a)ans=110
3.find—查找非零元素的值和下标k=find(x)—阵列中
[i,j]=find(x)—矩阵中[i,j,v]=find(x)—v为值,可得
v值的列
a=zeros(5,20);
a(3,7)=0.5;i=3j=7v=0.5000
a(4,15)=-0.4;415-0.4000
[i,j,v]=find(a);
4.exist:
检查给定变量或文件是否存在
a=exist('item')
ident=exist('item',kind)
5.is*检测状态
A=one(3,3);s='ad3fi'
A(:
:
)=[];isletter
isempty(A);ans=11011
ans=1
6.logical—数值转变成逻辑值
logical(A)返回能够用于逻辑索引或逻辑测试的数组。
A=logical(eye(3))
A=100B=rand(3)B=0.44470.92180.4057
0100.61540.73820.9355
0010.79190.17630.9169
B(A)
ans=0.4447
0.7382
0.9109
字符串部分
字符串的比较
三种情况:
1.比较两个字符串或两个字符串的一部分是否相等
2.逐个比较两个字符串中的字符,判别是否相等
3.对字符串中的每一个元素进行分类判别是字符还是空格
一.比较两个字符串strcmp
strcmp判别两个字符串是否相等
strncmp判别两个字符的前n个字符是否相等。
Strncmp
Eg:
str1=‘hello’
str2=‘help’
strcmp(str1,str2)
ans=0
strcmp(str1,str2,3)
ans=1
这两个函数还可以比较两个字符串的单元数组。
Eg:
A={‘pizza’;‘chips’;‘candy’;‘cake’;‘beer’};
B={‘pizza’;‘chololate’;‘pretzels’;‘beef’;‘beer’};
strcmp(A,B)strcmp(A,B,1)strncmp(A,B,4)
ans=1ans=1ans=1
010
000
000
1.11
二.用运算符比较字符串
“==”比较两个字符串中对应字符是否相同
A=‘fate’;
B=‘cake’;
A==B
ans=0101
“~=”表示不等于
A~=B
ans=1010
三.字符串中字符的分类
isletter是否为字母isspace是否为空格或制表符
mystring=‘Room401’;
A=isletter(mystring);
A=11110000
B=isspace(mystring)
B=00001000
对二维数组也可以
Eg:
A=[‘12A’;’13B’];
L=isletter(A)S=isspace(A)
L=0001S=0100
00010010
对单元矩阵形式的字符串,不能直接应用这两个函数。
但可以对指定的单元进行判别。
Eg:
strcell={‘piza’;‘chis’;‘cany’;‘cake’;‘er’};
LL=isletter(strcell{1});
LL=11011
SS=isspace(strcell{2})
SS=00010
字符串的查找与替换
一.strrep可实现标准的查找与替换。
Eg:
label=‘sample1,10/28/95’;
newlabel=strrep(label,‘10/28/95’,‘12/20/1999’);
newlabel=sample1,12/20/1999
二.findstr用于在字符串中查找指定的子串
找到一个子串返回开始位置
找到多个子串用一个矢量指出它们的位置
没找到返回[]
Eg:
position=findstr(‘1’,newlabel);
position=81117
position=find(‘wa’,newlabel);
position=[]
三.strtok先在字符串中查找分隔字符(如空格,‘/’,制表符等),然后返回第1个分隔符前的子串。
Eg:
first=strtok(label);
first=sample
first=strtok(label,‘1’)
first=sample1,10
知识要点
MATLAB的特点
1.以复数矩阵作为基本编程单元,使操作变得轻而易举,矩阵不需定义。
2.语句简单,编程效率高,用数学语言编写比C,Basic,Fortran更加接近人们书写计算公式的思维方式。
MATLAB俗称演算纸式科学算法语