1语言简洁,编程效率高 2. 交互性好,使用方便3. 强大的绘图能力,便于数据可视化4学科众多、领域广泛的工具箱 5. 开放性好,易于扩充6与C 语言和Fortran 语言有良好的接口7完备的数据类型
二MATLAB 的各种文件
最基本的是M 文件、数据文件和图形文件,除此之外,还有MEX 文件、模型文件和仿真文件
1M 文件,以.m 为扩展名,所以称为M 文件2数据文件,以.mat 为扩展名,所以又称MAT 文件3图形文件,以.fig 为扩展名4MEX 文件,以.mex 或.dll 为扩展名,所以称MEX 文件5模型和仿真文件,模型文件以.mdl 为扩展名,由Simulink 仿真工具箱在建立各种仿真模型时产生
三size例13 一个三位整数各位数字的立方和等于该数本身则称该数为水
仙花数。输出全部水仙花数。 程序如下: for m=100:999
m1=fix(m/100); %求m的百位数字 m2=rem(fix(m/10),10); %求m的十位数字
m3=rem(m,10); %求m的个位数字 rem求余数 if m==m1*m1*m1+m2*m2*m2+m3*m3*m3 disp(m) end end
结果:153
370 371 407
功能:求阵列维大小。 格式:
d=size(X) m=size(X,dim)
[m,n]=size(X) [d1, d2, d3, …, dn]=size(X) 说明:
由于MATLAB 5.0以上版本增强了阵列功能,使之在MATLAB中可采用阵列,因此size的功能也相应地得到增强。
d=size(X)可得到阵列X每个维的尺寸,d为一向量,阵列X的维数(即向量d的长度)可由ndims(X)得到。
当X为矩阵(二维阵列)时,[m, n]=size(X)可得到其尺寸;当X为阵列时,[dl, d2, d3, …, dn]=size(X)可得到各个维的尺寸;m=size(X,dim)可得到指定维dim的尺寸。例如: >> X=rand(2, 4, 8)
m=size(X, 2) m = 4
>> d=size(X) d =
2 4 8 >> [d1, d2, d3]=size(X) d1 = 2 d2 = 4 d3 = 8
clear
功能:从工作空间中删除项目。 格式:
clear clear global name clear name clear keyword clear namel name2 name3
画出MATLAB系统的组成结构。
第二讲 MATLAB基本操作
一函数
1) MATLAB的内部函数2) MATLAB系统附带的各种工具箱中的M文件所提供的大量实用函数3) 由用户自己增加的函数,以适用于特定领域。
二矩 阵 基 础
2.2.1 矩阵的输入
在MATLAB中,输入矩阵可有以下几种方法: ● 输入元素列表。
● 从外部数据文件中读取矩阵。
● 利用MATLAB内部函数与工具箱函数产生矩阵。 ● 用户自己编写M文件产生矩阵。
三利用MATLAB内部函数与工具箱函数产生矩阵
矩阵可通过输入每个元素来直接产生,也可以通过读取由其它软件产生的数据来产生,除此之外,还可以由标准M函数产生矩阵。例如:>> a=eye(4) %产生4×4的单位阵 a =
1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 >> a1=eye(2,3) %产生2×3的单位阵 a1 =
1 0 0 0 1 0 >> b=zeros(2,10) %产生2×10的全0阵 b =
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 >> c=ones(2,10) %产生2×10的全1阵 c =
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 >> c1=8*ones(3,5) %产生3×5的常数阵 c1 =
8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
MATLAB的有些函数可输入更多的变量,以产生矩阵。例如: d=zeros(3,2,2); %产生3×2×2的零矩阵(阵列) 为了进行信号分析与处理,经常需要对接收信号进行仿真,而在信号仿真中离不开随机数的产生,MATLAB提供的rand和randn函数可分别产生均匀分布和正态分布的随机数。例如,要产生[0,1]之间均匀分布的随机向量r1(2×3),可输入: >> r1=rand(2, 3) %产生[0,1]之间均匀分布的随机矩阵 r1 =
0.4565 0.8214 0.61 0.0185 0.4447 0.7919
>> r2=5-10*rand(2, 3) %产生[-5,5]之间均匀分布的随机矩阵 r2 =
0.73 4.4211 -3.1317 -3.9365 1.4713 4.9014
>> r3=randn(2,3) %产生均值为0、方差为1的标准正态分布的随机矩阵 r3 =
1.12 0.3273 -0.1867 -0.0376 0.1746 0.7258
>> r4=2*randn(2,3)+3 %产生均值为3、方差为4(22)的正态分布的随机矩阵 r4 =
2.8087 3.5888 4.4286 1.3353 0.3276 6.2471 利用diag函数可产生对角阵,例如: >> d=[2 -10 8]
d =
2 -10 8
>> a=diag(d) %标准对角阵,非零元素位于主对角线上 a =
2 0 0 0 -10 0 0 0 8 >> a1=diag(d,1) %非零元素位于次对角线上 a1 =
0 2 0 0 0 0 -10 0 0 0 0 8 0 0 0 0 >> a2=diag(d, -1) %非零元素位于次对角线 a2 =
0 0 0 0 2 0 0 0 0 -10 0 0 0 0 8 0
fliplr和flipud函数可以将矩阵元素按左右、上下翻转,
例如:
>> fliplr(diag(d)) %非零元素位于反主对角线 ans =
0 0 2 0 −10 0 8 0 0
diag函数还可以从矩阵中提取对角线元素,例如: >> r=rand(3,3) r =
0.13 0.6038 0.0153 0.2028 0.2722 0.7468 0.1987 0.1988 0.4451 >> b=diag(r) %提取主对角线元素 b =
0.13 0.2722 0.4451
>> b1=diag(fliplr(r)) %提取反主对角线元素 b1 =
0.0153 0.2722 0.1987
利用diag函数可得到复杂的矩阵,例如:
>> v=[1 2 3 4]; v1=[7 8 9]; >> c=diag(v)+diag(v1,1) c =
1 7 0 0 0 2 8 0 0 0 3 9 0 0 0 4
四 矩阵的操作
1.矩阵转置
对矩阵进行转置是很简单的。例如,对矩阵A的转置为A',注意:当A为复数矩阵时,则A'表示共轭转置,如果要实现非共轭转置,则应采用A.',例如: >> A=[100 200 300]; >> A' ans = 100 200 300
>> B=[100+100i 200+200i 300+300i]; >> B' ans =
1.0e + 002 * 1.0000 - 1.0000i 2.0000 - 2.0000i 3.0000 - 3.0000i >> B.' ans =
1.0e+002 *
1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i
2.矩阵重排
对已经存在的矩阵,可以根据其存储方式进行重排。例如: >> a=[1 2;3 4;5 6] a =
1 2 3 4 5 6 >> b=a(:) %变成一维列向量 b = 1 3
5 2 4 6
>> c=reshape(a,2,3) %变成2×3矩阵,注意变换前后的矩阵元素个数必须相等 c =
1 5 4 3 2 6
>> d=zeros(2,2) %先定义一个2×2的全0阵 d =
0 0 0 0
>> d(:)=a(3:6) %然后从a阵中取出4个元素,构成新矩阵 d =
5 4 2 6
矩阵元素求和
MATLAB提供的sum函数可以完成对矩阵元素按列求和。例如: >> a=[1 2 3;10 20 30;4 5 6] a =
1 2 3 10 20 30 4 5 6 >> sum(a) ans =
15 27 39
如果要按行计算元素和,可输入: >> sum(a')' ans = 6 60 15
为获取矩阵a的对角线上的元素,可采用diag函数 >> diag(a) ans = 1 20
6 因此计算矩阵a对角线上的元素之和,可输入: >> sum(diag(a)) ans = 27
● C=A*B完成矩阵A、B的线性代数积,
C(i,j)A(i,)B(k,j)k1n即
当A,B中任一个为标量时,直接将它乘到另一个矩阵的每个元素中。 ● C=A.*B是A,B对应元素相乘,即 C(i,j)=A(i,j)B(i,j)
● A/B完成矩阵右除,即它相当于A*inv(B)。
● C=A./B完成阵列右除,即C(i, j)=A(i, j)/B(i, j)。
●A\\B完成矩阵左除。当A为方阵时,相当于inv(A)*B,因此X=A\\B是线性方程Ax=B的解(利用高斯消元法求解)。
● C=A.\\B完成阵列左除,即C(i, j)=B(i, j)/A(i, j)。
eps
功能:浮点数相对精度。 格式:eps 说明:
eps可得到从1.0到下一个浮点数之间的距离,它可用作许多函数(如pinv、rank)的缺省容许值。例如: >> eps ans =
2.2204e-016
2.reshape
功能:阵列重新排列。 格式:
B=reshape(A,m,n) B=reshape(A,[m n p …]) B=reshape(A,m,n,p,…) B=reshape(A,siz)
1】figure命令
• 格式:figure 或 figure(N)
• 功能:创建一个图形窗口。使编号为N的图形窗口成为当前图形窗口,即图形窗口
处于可视状态。如果窗口N不存在,则将创建一个句柄为N的图形窗口
【2】clf命令
• 格式:clf
• 功能:清除当前图形窗口中的所有的内容 例
>> x=-pi:pi/10:pi; >> y=sin(x); >> plot(x,y)
>>clf
【3】close命令
• 格式一:close
• 功能: 关闭当前图形窗口
• 格式二: close (N)
• 功能: 关闭指定编号N的图形窗口
• 格式三:close all
• 功能: 关闭所有图形窗口
• 绘制函数——plot函数
• 函数能够将向量或者矩阵中的数据绘制在图形窗体中,并且可以指定不同的
线型和色彩
• 同一个plot函数可以一次绘制多条曲线
• 基本语法格式
• 绘制一条曲线
• plot(x, y, ’color_linestyle_marker’)
• 绘制多条曲线
• plot(t,[y1,y2,…])
• plot(x1,y1,’clm1’,x2,y2,’clm2’, ……)
设置曲线的样式属性
使用命令grid,可以将图形窗体的轴在有网格线和无网格线之间切换 grid on——图形窗体的轴显示坐标网格线 grid off——图形窗体的轴不显示坐标网格线
使用命令hold,可以将图形窗体在锁定状态与非锁定状态之间进行切换
– hold on——图形窗体处于锁定状态
• 可以向已经存在曲线的图形窗体中增加曲线
– hold off——图形窗体处于非锁定状态
• 任何绘图操作都将清除当前图形窗体已经绘制的内容
• (1)sym函数
• sym函数用来建立单个符号量,例如,a=sym('a')建立符号变量a,此后,用户可
以在表达式中使用变量a进行各种运算。
(2)syms函数
syms函数的一般调用格式为: syms var1 var2 … varn
函数定义符号变量var1,var2,…,varn等, 用这种格式定义符号变量时不要在变量名上加字符分界符('),变量间用空格而不要用逗号分隔。
基础运算符: +,-,*, /等 M文件
用MATLAB语言编写的程序,称为M文件。
M文件可以根据调用方式的不同分为两类:脚本文件(命令文件)(Script File)和函数文件(Function File)
脚本文件:将原本要在MATLAB环境下直接输入的多条语句,存放为.m后缀的文件,在命令行键入文件名,替代多条语句,一次执行成批命令。 函数文件:以固定格式书写的程序代码,
第一行是函数定义行。和C语言,Fortran等语言程序一样。
1.3 M文件的格式 命令文件 — 简单的m文件
命令文件实际上是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果是一样的。没有输入输出参数。
命令文件格式
包括两部分:注释文件和程序文件
函数m文件的调用
函数调用的一般格式是:
[输出实参表]=函数名(输入实参表)
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuoyibo.net 版权所有 湘ICP备2023021910号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务