MATLAB示例.docx
《MATLAB示例.docx》由会员分享,可在线阅读,更多相关《MATLAB示例.docx(27页珍藏版)》请在冰豆网上搜索。
MATLAB示例
目录
1矩阵基础3
1.1创建矩阵3
1.1.1直接输入法3
1.1.2构造序列3
1.1.3函数构造法3
1.2获取矩阵信息5
1.3矩阵元素的访问5
1.3.1利用下标访问5
1.3.2利用逻辑矩阵访问6
1.4矩阵拼接、变形,改变大小7
1.4.1矩阵拼接7
1.4.2矩阵变形8
1.4.3矩阵90度旋转9
1.4.4矩阵翻转9
1.4.5矩阵转置10
1.4.6矩阵扩容10
1.4.7矩阵收缩11
1.4.8矩阵复制11
1.5简单数据处理12
1.5.1元素的和与积12
1.5.2平均值和中位数13
1.5.3最大最小值14
1.5.4累计求和、积15
1.5.5矩阵排序15
2MATLAB运算符16
2.1算术运算符16
2.1.1加、减法[M×N]±[M×N],[M×N]±a16
2.1.2数组乘法[M×N].*[M×N],[M×N].*a17
2.1.3数组除法[M×N]./[M×N],[M×N].\[M×N],[M×N]./a,[M×N].\a17
2.1.4数组乘方[M×N].^[M×N],a.^[M×N],[M×N].^a18
2.1.5矩阵乘法[M×N]*[N×M],[M×N]*a18
2.1.6矩阵乘方[M×M]^a19
2.1.7线性方程求解[M×N]\[M×1],[1×M]/[N×M]19
2.2关系运算符20
2.3逻辑运算符20
3MATLAB数值计算21
3.1多项式计算21
3.1.1多项式的根与系数21
3.1.2多项式求值21
3.1.3多项式导数21
3.1.4多项式乘法和除法22
3.1.5部分分式分解22
3.2数值积分23
3.3代数方程数值解24
3.3.1一元非线性方程24
3.3.2多元非线性方程及方程组24
1矩阵基础
1.1创建矩阵
1.1.1直接输入法
x=[123]
y=[123;456]
x=
123
y=
123
456
1.1.2构造序列
A=0:
0.1:
1
B=linspace(0,1,10)
A=
Columns1through6
00.10000.20000.30000.40000.5000
Columns7through11
0.60000.70000.80000.90001.0000
B=
Columns1through6
00.11110.22220.33330.44440.5556
Columns7through10
0.66670.77780.88891.0000
1.1.3函数构造法
x=eye(3),y=eye(2,4)%单位矩阵
x=
100
010
001
y=
1000
0100
x=rand(3),y=rand(2,4)%随机矩阵
x=
0.91570.65570.9340
0.79220.03570.6787
0.95950.84910.7577
y=
0.74310.65550.70600.2769
0.39220.17120.03180.0462
x=zeros(3),y=zeros(2,4)%全0矩阵
x=
000
000
000
y=
0000
0000
x=ones(3),y=ones(2,4)%全1矩阵
x=
111
111
111
y=
1111
1111
x=[13568]
A=diag(x)%对角矩阵
x=
13568
A=
10000
03000
00500
00060
00008
1.2获取矩阵信息
x=1:
10;
A=ones(4);
L=length(x)%获取向量长度
[m,n]=size(A)%获取矩阵各维大小
N=numel(A)%获取矩阵元素个数
L=
10
m=
4
n=
4
N=
16
1.3矩阵元素的访问
1.3.1利用下标访问
A=[1:
4;5:
8;9:
12;13:
16]
x=A(3,2)%单个元素访问方式1
y=A(7)%单个元素访问方式2
A=
1234
5678
9101112
13141516
x=
10
y=
10
A=[1:
4;5:
8;9:
12;13:
16]
x=A(2:
3,3:
4)%子阵访问1
y=A([2:
3;3:
4])%子阵访问2
A=
1234
5678
9101112
13141516
x=
78
1112
y=
59
913
A=[1:
4;5:
8;9:
12;13:
16]
x=A(2,:
)%获取单行
y=A(:
2:
3)%获取多列
A=
1234
5678
9101112
13141516
x=
5678
y=
23
67
1011
1415
1.3.2利用逻辑矩阵访问
A=[1:
4;5:
8;9:
12;13:
16]
B=A>10
x=A(B)
A(A>10)=0
A=
1234
5678
9101112
13141516
B=
0000
0000
0011
1111
x=
13
14
11
15
12
16
A=
1234
5678
91000
0000
1.4矩阵拼接、变形,改变大小
1.4.1矩阵拼接
a=ones(3,4)
b=zeros(3,2)
c=[ab]%水平方向连接,行数一致
x=[ones(3,4);zeros(2,4)]%垂直方向连接,列数一致
a=
1111
1111
1111
b=
00
00
00
c=
111100
111100
111100
x=
1111
1111
1111
0000
0000
A=ones(4)
B=zeros(4)
C=cat(3,A,B)%三维矩阵
A=
1111
1111
1111
1111
B=
0000
0000
0000
0000
C(:
:
1)=
1111
1111
1111
1111
C(:
:
2)=
0000
0000
0000
0000
1.4.2矩阵变形
A=1:
16
B=reshape(A,2,8)%元素个数不变,保持矩形
C=reshape(A,4,4)
A=
Columns1through10
12345678910
Columns11through16
111213141516
B=
13579111315
246810121416
C=
15913
261014
371115
481216
1.4.3矩阵90度旋转
A=reshape(1:
9,3,3)
B=rot90(A,1)%逆时针
C=rot90(A,-1)%顺时针
A=
147
258
369
B=
789
456
123
C=
321
654
987
1.4.4矩阵翻转
A=reshape(1:
9,3,3)
B=fliplr(A)%左右翻转
C=flipud(A)%上下翻转
A=
147
258
369
B=
741
852
963
C=
369
258
147
1.4.5矩阵转置
A=reshape(1:
9,3,3)
B=A'%共轭转置
C=A.'
A=
147
258
369
B=
123
456
789
C=
123
456
789
1.4.6矩阵扩容
A=reshape(1:
9,3,3)
A(4,:
)=10:
12%增加第4行
A(:
4)=[10;20;30;40]%增加第4列
A=
147
258
369
A=
147
258
369
101112
A=
14710
25820
36930
10111240
1.4.7矩阵收缩
A=reshape(1:
16,4,4)
A(2,:
)=[]%删除第2行
A(:
3)=[]%再删除第3列
A=
15913
261014
371115
481216
A=
15913
371115
481216
A=
1513
3715
4816
1.4.8矩阵复制
A=reshape(1:
4,2,2)
B=repmat(A,2,3)
A=
13
24
B=
131313
242424
131313
242424
1.5简单数据处理
1.5.1元素的和与积
x=1:
10
y=reshape(1:
9,3,3)
a=sum(x)
b=sum(y)%对每一列求和
c=sum(y,2)%对每一行求和
x=
12345678910
y=
147
258
369
a=
55
b=
61524
c=
12
15
18
x=1:
10
y=reshape(1:
9,3,3)
a=prod(x)
b=prod(y)%对每一列求积
c=prod(y,2)%对每一行求积
x=
12345678910
y=
147
258
369
a=
3628800
b=
6120504
c=
28
80
162
1.5.2平均值和中位数
x=[1256789]
y=[125;237;6811]
a=mean(x)
b=mean(y)%每一列平均值
c=mean(y,2)%每一行平均值
x=
1256789
y=
125
237
6811
a=
5.4286
b=
3.00004.33337.6667
c=
2.6667
4.0000
8.3333
x=[1256789]
y=[125;782;6311]
a=median(x)
b=median(y)%每一列的中位值
c=median(y,2)%每一行中位
x=
1256789
y=
125
782
6311
a=
6
b=
635
c=
2
7
6
1.5.3最大最小值
x=1:
10
y=reshape(1:
9,3,3)
a=max(x)%最小值用min
b=max(y)%每一列的最大值
c=max(y,[],2)%每一行最大值,空矩阵不能少
x=
12345678910
y=
147
258
369
a=
10
b=
369
c=
7
8
9
1.5.4累计求和、积
x=[1:
3;4:
6;8:
10]
a=cumsum(x)%累计和;累计求积用cumprod
b=cumsum(x,2)
x=
123
456
8910
a=
123
579
131619
b=
136
4915
81727
1.5.5矩阵排序
x=[821;283;917]
sort(x)
[y,k]=sort(x,2,'descend')
x=
821
283
917
ans=
211
823
987
y=
821
832
971
k=
123
231
132
x=[821;283;917]
y=sortrows(x,1)%以行为单位,按指定的列排序
x=
821
283
917
y=
283
821
917
2MATLAB运算符
2.1算术运算符
2.1.1加、减法[M×N]±[M×N],[M×N]±a
A=[1:
3;4:
6],B=ones(2,3)
C=A+B,D=A-B,E=D+2%同维矩阵,对应元素相加
A=
123
456
B=
111
111
C=
234
567
D=
012
345
E=
234
567
2.1.2数组乘法[M×N].*[M×N],[M×N].*a
A=[1:
3;4:
6],B=[111;222]
C=A.*B,D=C*3%同维矩阵,对应元素相乘
A=
123
456
B=
111
222
C=
123
81012
D=
369
243036
2.1.3数组除法[M×N]./[M×N],[M×N].\[M×N],[M×N]./a,[M×N].\a
A=[1:
3;4:
6],B=[111;222]
C=A./B,D=A.\B%同维矩阵,对应元素相除;想象成杠杆撬动,上面是被除数
E=A./2,F=2./A
A=
123
456
B=
111
222
C=
1.00002.00003.0000
2.00002.50003.0000
D=
1.00000.50000.3333
0.50000.40000.3333
E=
0.50001.00001.5000
2.00002.50003.0000
F=
2.00001.00000.6667
0.50000.40000.3333
2.1.4数组乘方[M×N].^[M×N],a.^[M×N],[M×N].^a
A=[1:
3;4:
6],B=[111;222]
C=A.^B,D=2.^A,E=A.^2
A=
123
456
B=
111
222
C=
123
162536
D=
248
163264
E=
149
162536
2.1.5矩阵乘法[M×N]*[N×M],[M×N]*a
A=[1:
3;4:
6],B=[11;22;33],C=A*B,D=A*3
A=
123
456
B=
11
22
33
C=
1414
3232
D=
369
121518
2.1.6矩阵乘方[M×M]^a
A=[1:
3;4:
6;7:
9],B=A^2
A=
123
456
789
B=
303642
668196
102126150
2.1.7线性方程求解[M×N]\[M×1],[1×M]/[N×M]
A=[122;2-1-1;11-1],b=[3;6;2],x=A\b,y=b'/A'
A=
122
2-1-1
11-1
b=
3
6
2
x=
3.0000
-0.5000
0.5000
y=
3.0000-0.50000.5000
2.2关系运算符
仅以“大于”运算为例
A=reshape(1:
6,2,3),B=2*ones(2,3),x=A>B,y=A>3
A=
135
246
B=
222
222
x=
011
011
y=
001
011
2.3逻辑运算符
仅以“与”运算为例
A=reshape(1:
6,2,3)-3,B=[111;000]
x=A&B,y=A&0
A=
-202
-113
B=
111
000
x=
101
000
y=
000
000
3MATLAB数值计算
3.1多项式计算
3.1.1多项式的根与系数
p=[1-611-6],x=roots(p)%求x^3-6x^2+11x-6=0的根
q=poly(x),poly2str(q,'a')%由根确定多项式系数
p=
1-611-6
x=
3.0000
2.0000
1.0000
q=
1.0000-6.000011.0000-6.0000
ans=
a^3-6a^2+11a-6
3.1.2多项式求值
%求f(x)=x^4+4x^3+5x^2+7x-3在x=2.6的值
f=polyval([1457-3],2.6)
f=
165.0016
3.1.3多项式导数
c=[1457-3],fc=poly2str(c,'x')
d=polyder(c),fd=poly2str(d,'x')
c=
1457-3
fc=
x^4+4x^3+5x^2+7x-3
d=
412107
fd=
4x^3+12x^2+10x+7
3.1.4多项式乘法和除法
a=[123],b=[456],c=conv(a,b)
[d,e]=deconv(c,[1,2])%d为商式,e为余式
a=
123
b=
456
c=
413282718
d=
4518-9
e=
000036
3.1.5部分分式分解
对以下分式多项式进行部分分式分解:
b=[-48];
a=[168];
[r,p,k]=residue(b,a)
r=%分子系数
-12
8
p=%极点
-4
-2
k=%余子式
[]
3.2数值积分
建立objfun.m函数
functiony=objfun(x)
y=sin(x)-x;
f=quad(@objfun,0,pi)
g=quadl(@objfun,0,pi)
f=
-2.9348
g=
-2.9348
建立objfun.m函数
functiony=objfun(x,beta)
y=sin(x+(0:
pi/6:
beta);
y=quadv(@(x)objfun(x,pi),0,pi)
y=
2.00001.73211.00000.0000-1.0000-1.7321-2.0000
建立objfun.m函数
functionz=objfun(x,y)
z=x.^2+y.^2;
F=dblquad(@objfun,0,4,0,4)
F=
170.6667
建立objfun.m函数
functionf=objfun(x,y,z)
f=y*sin(x)+z*cos(x);
F=triplequad(@objfun,0,pi,0,1,-1,1)
F=
2.0000
3.3代数方程数值解
3.3.1一元非线性方程
求解:
在3附近的解。
建立objfun.m函数
functionf=objfun(x)
f=sin(x)-cos(x).^2;
x=fzero(@objfun,3)
x=
2.4754
3.3.2多元非线性方程及方程组
求解:
,在(2,2)附近的解
建立objfun.m函数
functionf=objfun(x)
f=x
(1).^2+x
(2).^2-5;
x=fsolve(@objfun,[2,2])
Warning:
Trust-region-doglegalgorithmofFSOLVEcannothandlenon-squaresystems;usingLevenberg-Marquardtalgorithminstead.
>Infsolveat324
Optimizationterminated:
thefirst-orderoptimalitymeasureislessthan1e-