matlab应用基础(1)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5. 程序的流程控制命令: continue 终止一次循环,跳过剩余语句, 执行下 一循环。 break 跳出最近的一层循环 (1) (2) a=3;b=6; a=3;b=6; for i=1:3 for i=1:3 b=b+1; b=b+1; if i<2 if i>2 continue break end end a=a+2; a=a+2; end end a,b a,b
3.常用的数组操作命令 (1)确定数组大小命令 A=[2,5,1,-2,7;0,3,-1,-2,4;0,0,5,8,8] 求数组A行数与列数的最大值:n=length(A) 提取数组A的行数与列数:[m,n]=size(A) (2)排序命令 将数组x的元素排序: x=[3,-1,2,5,7,4,6,11,13,9,2,0,7,8] b=sort(x) %按升序 [b,k]=sort(x)
第二节 程序设计 一、 m-文件 1.函数m-文件
格式:function
[y1,y2]=ff(x1,x2)
输入变量:x1,x2,输出变量:y1,y2 注:输入、输出变量可以为1个或多个。
例2.1 建返回一次函数与二次函数的值的函数文件, 并对给定的系数求指定点的函数值。 function [s,t]=fun201(a,b,c,x) t=a*x+b; s=a*x^2+b*x+c;
(5)稀疏矩阵与满矩阵的转化: 稀疏矩阵生成命令:sparse A=sparse([2,4,18],[3,12,20],[-5,-3,-8]) 将稀疏矩阵x变回满矩阵: A=full(A)
(6) sum(A):矩阵A按列求和,返回一个行向量; sum(A,2):矩阵A按行求和,返回一个列向量。 max(A):返回由矩阵各列的最大值构成的向量。 max(A,B):返回A与B对应元素最大值构成的矩阵 min(A),min(A,B)类似
(8)diag命令: b=diag(A): 提取方阵A的对角线元素构成列向量b A=diag(b): 用向量b的元素生成对角方阵A (9) nchoosek:求组合数 nchoosek(5,2) a=[3,2,1,7] nchoosek(a,2)
三、数组的运算 1.数值运算 设A与B为同维数的数组,k为常数, A+B,A-B,k*A A.*B, A./B, A.^n 2.关系运算与逻辑运算 等于:= = ,不等于:~= , 小于:< , 大于:>,小于等于:<= ,大于等于:>=。 与:& ; 或:| ; 非:~ 。
0.3333
0.2500 0.5000 1.0000
0
0.3333 0.2500
0
0 0
0.5000
1.0000 0
源自文库
2. 脚本m-文件 在文本编辑窗口按要求编辑程序,输完程序后保 存,在对话框中输入文件名. 运行m-文件: 单击Debug →run.即可运行,或F5。 或在命令窗口输入文件名并回车。
例2.5 在某地区开掘水渠,已知该水渠经过的若干点坐标(X,Y),
X=[7650,7950,8250,8550,8850,9150,9450,9750,10050,10350,10650,10950,1125 0,11550,11850,12150,12450,12750,13050,13350,13650,13950,14250,14550]; Y=[4650,4890,5100,5190,5220,5190,5130,4890,4650,4470,4320,4200,4080,3930 ,3840,3720,3660,3630,3570,3540,3600,3690,3780,3900];
1.直接输入法 matlab在创立数组时以逗号或空格表示分列,分号 或回车表示分行。数组开头“[”、结尾“]” 行数组:如a=[1,2,3,8,-1] 列数组: b=[1;2;3;8;-1] 或a’ 矩阵:A= [2,4,1;8:-2:4;2,4,6]
2.通过数组编辑器生成矩阵
步骤:先建立空矩阵a=[], 然后在工作空间(workspace)中点开a进入数 组编辑器,输入元素。
3.用函数创建数组
定步长生成法 x=a:t:b (t步长,省略是为1); 定数线性采样法 x=linspace(a,b,n), a与b是数组的第一个和最后一个元素, n是采样的总点数。
zeros(m): m阶全零方阵 zeros(m,n): m×n阶全零方阵 eye(m): m阶单位阵 ones(m): m阶全1方阵 ones(m,n): m×n阶全1方阵 rand(m): m阶均匀分布随机方阵 randn(m): m阶正态分布随机方阵
例2.4 数组x=(8,3,5,-1,6,10,7,2,9,11),求出其中所有除 以5余1的元素之和以及所有除以5余4的元素之和. x=[8,3,5,-1,6,10,7,2,9,11]; s1=0; s2=0; for m=x switch mod(m,5) case 1 s1=s1+m; case 4 s2=s2+m; end end s1,s2
2.数组拼接与数组中的元素值的改变 在命令窗口实验: a=1:2:11 a(1)=0 a(1:4)=[2,-1,-2,-3] a([2,5])=[1.5,0.5]
如: x=0:2:10, y=[-2,-5,-8], xx=[x,y] xx(7)=[] xx([2,5])=[]
删除和改变矩阵的元素 A=[2,3,4,5,6;1,2,3,4,5;0,1,2,3,4;-1,0,1,2,3] 删除矩阵A第3行:A(3,:)=[] 删除矩阵A第2列:A(:,2)=[] A(3,5)=10, A([2,4],[3,5])=10*ones(2) 通过数组编辑器改变元素的值
(7) find命令: A=[0,0,2,-1,3,0,0,5,0,6,-7,0,0,9]; find(A) 找出A中不为零的元素的下标。 find(A,k) 找出A中前k个不为零的元素的下标。 find(A,k,’last’) 找出A中后k个不为零的元素的 下标。 find(g(A)),其中g(A)是数组A的逻辑表达式, 返回数组A中满足条件g(A)的元素下标。 B=[A;A-5] t=find(B>2) [x,y]=find(B>2) [x,y]=find(B>=1&B<=3)
MATLAB应用基础(一)
第一节 Matlab中的数组 matlab中的运算和操作是以数组为对象的, 数组又包括:数值数组、字符数组、元胞数组等。 数值数组:(1)n维数值向量(行向量与列向量) (2)数值矩阵 (3)由数值矩阵构成的元胞数组
一、数组的建立 几个标点符号的作用: 逗号:用来将数组中的元素分开。(可用空格代替) 分号:用来将矩阵中的行分开。 (可用回车键代替) 冒号:相当于文字中的省略号。 中括号:界定数组的首与尾。
假设该水渠是以这些点节点的折线, (1)作出水渠的折线图,求出水渠的总长度。 (2)记点A(7650,4650),点B(xn,yn)为水渠上任一点,编 写求水渠上A到B段长度的matlab函数。 (3)已知C(8100,4995), D(13500,3570)为水渠上两点,求 水渠上C到D段的长度。
3. 数组的集合运算
a=1:12; b=5:15; setdiff(a,b) (a与b的差集) 得:1,2,3,4
intersect(a,b) (a与b的交集) 得:5,6,7,8,9,10,11,12 union(a,b)(a与b的并集) setxor(a,b)(a与b的异或集) 得:1,2,3,4,13,14,15
3. while-end 循环语句
while表达式 执行语句1 …… 执行语句n end 注:表达式一般是由逻辑运算和关系运算组成 的表达式,表达式的值非零继续循环,表达式 值为0终止循环。
4. swhitch 分值选择语句
swhitch表达式 case 常量表达式1 语句块1 case 常量表达式2 语句块2 …… case 常量表达式n 语句块n otherwise 语句块n+1 end
(3)改变数组形状的命令 x=[3,-1,2,5,7,4,6,11,13,9,2,0,7,8] 将一维数组x按条件转化为矩阵: B=reshape(x,2,7)
(4)数组的复制: c=[1,2,5,0] c1=repmat(c,4,1) c2=repmat(c,1,4) c3=repmat(c,3,2) c4=repmat(c,3)
(3)用excel表格中的数据创建数组: 使用命令xlsread(‘filemane’) 如:a=xlsread('cumcm2011A.xls') b=a(:,1:5) save('file2011a','b') load file2011a
(4) 用Word表格中的数据创建数组
二、数组的操作 数组的编址: 单下标编址:a(n)表示数组a的第n个元素。 双下标编址:A(2,3)表示矩阵A的第2行第3列元素。 三下标编址:B(2,3,5)表示数组B的第5页第2行第3 列元素。 1. 数组元素与子数组的提取 a=linspace(1,50,15) 提取数组a的第3个元素:y=a(3) 提取a的第3到7个元素:y=a(3:7),
提取a的第3,5,7,9个元素构成数组: b=a(3:2:9) 提取a的第2到5个元素,并反转次序构成数组: b1=a(5:-1:2) 按条件提取子数组: 提取a的元素值大于10的元素构成数组b2 b2=a(find(a>10))
二维数组元素的提取 A=[1,2,3,4,5;0,1,2,3,4;-1,0,1,2,3;-2,-1,0,1,2] b=A(2,4) b1=A(5) b3=A(2,:) b4=A(:,3) b5=[A(2,:);A(1,:)] b6=A([2,4],[3,5])
例2.2 建立函数文件,实现对矩阵x的非零元素取 倒数,零元素不变,然后调用该函数。
function y=fun202(a)
y=spfun(@(x)1./x,a);
end
a=[0,0,2;3,0,1;4,0,0] b=fun202(a) c=full(b)
b=
(2,1)
(3,1) (1,3) (2,3) c=
例1.1 创建一个元胞数组A,使A的第一页为4阶单位 矩阵,第2页为4阶全1方阵,第3页为4阶随机方阵。 第四页为4阶全3的方阵。 >> A(:,:,1)=eye(4); >> A(:,:,2)=ones(4); >> A(:,:,3)=rand(4); >> A(:,:,4)=3; >> A
4. 数据的读入与保存 (1)将workspace中的变量保存为m-文件: 如: a=rand(1,10); b=ones(10); save('aaa.mat','a','b') 完成将a,b两个变量保存为文件名为aaa.mat的文件 (2)调出文件中的数据: load aaa.mat 将aaa.mat文件中的数据调入workspace
例2.3 输入15个0~99的整数构成数组x,并构造数组: (1)将数组x的第偶数个元素平方,其余元素置0。 (2)将数组x中的奇数平方,偶数除以2。 (3)求第2,6,7,8,14个元素的平方和。 x=floor(rand(1,15)*100); y1=zeros(1,15); for i=2:2:14 y1(i)=x(i)^2; end k1=find(mod(x,2)==1);k2=find(mod(x,2)==0); y2(k1)=x(k1).^2; y2(k2)=x(k2)/2; n1=[2,6,7,8,14]; aa=[x;y1;y2] y3=x(n1).^2; z=sum(y3)
二、 流程控制语句 1. if条件语句 if 表达式 执行语句 end if 表达式 执行语句1 else 执行语句2 end if 表达式1 执行语句1 elseif 表达式2 执行语句2 else 执行语句3 end
2. for 循环语句 for i=数组 执行语句1 …… 执行语句n end