Matab编程入门.docx
- 文档编号:27035885
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:12
- 大小:19.09KB
Matab编程入门.docx
《Matab编程入门.docx》由会员分享,可在线阅读,更多相关《Matab编程入门.docx(12页珍藏版)》请在冰豆网上搜索。
Matab编程入门
Matlab编程入门
1数据结构:
矩阵
以矩阵为运算单位,且矩阵是动态的。
1.1矩阵的构造
1.1.1手工录入
元素间以空格/逗号分隔;行间以分号/回车分隔。
X=[13579111315]%行向量
X=
13579111315
X=[1;2;3;4]%列向量
X=
1
2
3
4
X=[1234];
X=X'%转置运算
Y=[135;7911]%矩阵
Y=
135
7911
1.1.2序列表示
X=1:
2:
16%行向量
Y=[1:
2:
5;7:
2:
11]%矩阵
1.1.3矩阵最简单参数
n=length(X)4
m=size(Y)23
size(Y,1)2
size(Y,2)3
1.1.4指令产生常用矩阵
X=eye(3)%单位矩阵
X=
100
010
001
X=ones(3,4)%全1阵
X=
1111
1111
1111
X=zeros(2,4)%全0阵
X=
0000
0000
v=1:
4
X=diag(v)%根据对角线向量构造矩阵
X=
1000
0200
0030
0004
1.1.5随机矩阵
X=rand(3,4)%在[0,1]区间的均匀分布随机数
X=
0.60380.01530.93180.8462
0.27220.74680.46600.5252
0.19880.44510.41860.2026
y=unifrnd(60,100,4,4)%连续均匀分布
y=unidrnd(100,4,4)%离散均匀分布(有需要补充的地方)
Y=randn(4,3)%服从N(0,1)分布的正态随机数
Y=
0.2765-1.8379-1.6316
0.3945-1.5023-0.3179
-0.09860.8192-0.7963
0.1764-0.23460.6908
StatisticsToolbox中的函数
normrnd正态分布
lognrnd对数正态分布
binornd二项分布
nbinrnd负二项分布
exprnd指数分布
gamrnd伽玛分布
geornd几何分布
hygernd超几何分布
frndf分布
ncfrnd非中心f分布
trndt分布
nctrnd非中心t分布
Chi2rnd卡方分布
Ncx2rnd非中心卡方分布
poissrnd泊松分布
Betarnd贝塔分布
Weibrnd威布尔分布
raylrnd瑞利分布
统一的随机数生成函数:
random('name',A1,A2,A3,m,n)
正态分布的示例:
y=random('Normal',60,30,4,4)
1.1.6矩阵的保存、读入
SavemydataXY
将X,Y存入mydata.mat中
Loadmydata
装入mydata.m中的数据
其他方式:
文本文件、Excel文件
1.2矩阵的常用操作
1.2.1存取单个元素
设X=[102030405060];
设Y=[123;456;789];
命令
输出
X(3)
30
X(3)=3%写入
10203405060
X(3)=[]%删除
1020405060
Y(2,2)
5
Y(3,5)=10%扩展写入
12300
45600
789010
1.2.1存取向量中的序列
设X=[102030405060];
命令
输出
X(1:
3)%顺序取序列
X(4:
end)
102030
405060
X(3:
-1:
1)%逆序取序列
302010
X([125])%点名取序列
X([1234321])
102050
10203040302010
X([24])=[11]%写入
1013015060
X([39])=[11]%扩展写入
10201405060001
X(end+1)=2%扩展写入
1020304050602
X([135])=[]%删除
204060
1.2.3存取矩阵中的子矩阵
设Y=[1234;5678;9101112;13141516];
命令
输出
Y(2:
3,3:
4)
78
1112
Y(2:
3,:
)
5678
9101112
Y(:
2:
3)
23
67
1011
1415
Y(5,:
)=[1234]
%行扩展写入
1234
5678
9101112
13141516
1234
Y(:
6)=[1234]'
%列扩展写入
123401
567802
910111203
1314151604
1.2.4矩阵的组合
X=[1234;
5678;
9101112;
13141516];
Y=[123;
456;
789;
101112];
Z=[1000;
0100];
命令
输出
[XY]%列扩展
1234123
5678456
9101112789
13141516101112
[X;Z]%行扩展
1234
5678
9101112
13141516
1000
0100
1.2.5矩阵的查找、排序
设X=[375042];
设Y=[375;042];
L=X>3
011010
L=find(X>3)
235
L=Y>2&Y<6
101
010
[i,j]=find(Y>2&Y<6)
i:
121
j:
123
is=find(Y>2&Y<6);
Y(is)
在矩阵中,取满足条件的数
sort(X);
[023457]
sort(Y,1);
sort(Y,2);
[042;375]
[357;024]
1.2.5集合运算
设A=[12325678];
B=[13469];
命令
输出
C=union(A,B)%并
123456789
C=intersect(A,B)%交
136
C=setxor(A,B)%并-交
245789
C=setdiff(A,B)%差
2578
C=UNIQUE(A)%唯一性
1235678
2矩阵运算和矩阵元素(数组)运算
2.1标量和矩阵元素的运算
设:
a=[12345],c=10
a+c=[1112131415]
a*c=[1020304050]
a/c=[0.10.20.30.40.5]
a.\c=[10.05.03.332.52.0]
a.^c=[110245904910485769765625]
c.^a=[10100100010000100000]
2.2数组运算
设:
a=[12345],b=[246810]
a+b=[3691215]
a.*b=[28183250]
a./b=[0.50.50.50.50.5]
a.\b=[22222]
b.^a=[2162164096100000]
示例:
计算向量p1和p2的距离。
D=sqrt(sum((p1-p2).^2))
2.3矩阵运算和数组运算的比较
A=[123;
456;
789]
B=[300;
020;
001]
矩阵运算
矩阵元素(数组)运算
A*B
343
12106
21169
A.*B
300
0100
009
2.4示例:
计算图像矩阵中图像区域的最小包含矩形
(选自2008年全国大学生竞赛)
I=imread('all.bmp')
I=1-I
col=find(sum(I,1)~=0);
left=col
(1);right=col(end);
row=find(sum(I,2)~=0);
top=row
(1);bottom=row(end);
3基于矩阵的程序设计
3.1最简单的函数文件
定义fun.m
functionf=fun(x)%函数名称和文件名应当相同
f=100*x
(2)+10*x
(1);
使用fun.m
x=[12];
y=fun(x);
y=
210
3.2格式规范的函数文件
定义addsub.m
function[out1,out2]=addsub(in1,in2)
%实现加减法运算
%[out1,out2]=addsub(in1,in2)
%out1=in1+in2;out2=in1-in2;
out1=in1+in2;
out2=in1-in2;
x=10;y=20;
[a,b]=addsub(x,y)
a=
30
b=
-10
3.3参数传递方式和局部变量
①参数传递方式:
单向值传递!
②函数中未经特别说明的变量,都是局部变量。
典型示例:
企图实现数据交换
实现了数据交换
functionswap(x,y)
tmp=x;x=y;y=tmp;
function[x,y]=swap(x,y)
tmp=x;x=y;y=tmp;
A=[135];B=[2468];
swap(A,B);
A=
135
B=
2468
A=[135];B=[2468];
[A,B]=swap(A,B);
A=
2468
B=
135
调试手段:
设置断点F12、单步跟踪F10/F11
感受局部变量:
观察函数调用中,每个函数的工作空间。
3.4全局变量
定义、说明:
global
functionf=fun()
A=[135];B=[2468];
globaln;
n=100;
[A,B]=swap(A,B);
[A,B]=swap(A,B);
[A,B]=swap(A,B);
f=n
function[x,y]=swap(x,y)
globaln;
tmp=x;x=y;y=tmp;
n=n+1;
对于fun()所调用的函数,n是全局变量。
建议:
对于极大空间的变量,采用全局变量。
3.5程序结构
3.5.1for语句
fori=1:
2:
10;
x(i)=i;
end;
x
x=
103050709
只要用矩阵运算可以解决的问题,不要使用循环。
3.5.2while循环
%计算斐波那切数列
a
(1)=1;a
(2)=1;i=2;
whilea(i)<=10000
a(i+1)=a(i-1)+a(i);
i=i+1;
end;
i,a(i)
i=
21
ans=
10946
3.5.3if语句
%计算斐波那切数列
n=100;a=[11];
fori=3:
n
a=[aa(i-1)+a(i-2)];
ifa(i)>=10000break;end;
end
a
ans=
10946
i=
21
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matab 编程 入门
![提示](https://static.bdocx.com/images/bang_tan.gif)