【 1. 基础 】
1.1 输入规则
- 语句以 分号 结尾 ,表示不显示运行结果。
- 语句以 无符号 或 逗号 结尾,表示显示运行结果。
- 一行可以输入若干条命令,各命令之间以逗号或分号分隔。
- 如果一行很长,需要换行时,要加续行符(三个小黑点…)。
- 可以在行后添加注释,注释以%开始。
1.2 常用操作命令
- clc :清除命令窗口。
- clf :清除当前图形。
- clear :清除工作空间的变量和函数。
- figure:创建图窗口。
1.3 变量命名原则
- 以字母开头。
- 后面可以跟 数字、字母 和 下划线。
- 长度不超过 63 个字符。
- 变量名 区分字母的 大小写,MATLAB提供的 标准函数名以及命令名必须用小写字母。
1.4 预定义变量
在MATLAB工作空间中,还驻留几个由系统本身定义的变量。它们有特定的含义,在使用时,应尽量避免对这些变量重新赋值。例如:pi 、i、inf 等等。
【 2. 矩阵 】
矩阵是 MATLAB 最基本的元素。
2.1 矩阵的创建
2.1.1直接输入法
- 矩阵用方括号 [ ] 括起
- 矩阵同一行中的元素之间用 空格 或 逗号 分隔。
A=[1,3,5,7,9] %A是一个1行5列的矩阵。
B=[2 4 6 8 10] %B也是一个1行5列的矩阵。
- 矩阵不同行之间用 分号 分开,直接输入法中,分号可以用 回车 代替。
A=[1 2 3 ; 4 5 6 ; 7 8 9] %A是一个3行3列的矩阵
B=[11,12,13 %B也是一个3行3列的矩阵
14,15,16
17,18,19]
2.1.2函数构造法
- zeros:产生全0矩阵(零矩阵)。
- ones:产生全1矩阵(幺矩阵)。
- eye:产生单位矩阵。
- rand:产生0~1间均匀分布的随机矩阵。
- randn:产生均值为0,方差为1的标准正态分布随机矩阵。
- magic:产生魔方阵
- pascal:产生帕斯卡阵
%以上几个函数的调用格式相似,下面以产生零矩阵的zeros函数为例进行说明。
zeros(m) %产生m×m零矩阵
zeros(m,n) %产生m×n零矩阵
zeros(size(A)) %产生与矩阵A同样大小的零矩阵
2.1.3矩阵扩展法
%扩展行
A=[1,2,3;
4,5,6;
7,8,9]
B=[10,11,12]
C=[A;B]
运行结果:
A =
1 2 3
4 5 6
7 8 9
B =
10 11 12
C =
1 2 3
4 5 6
7 8 9
10 11 12
%扩展列
X=[1 2 3 4 5]
Y=[6 7 8 9 10]
Z=[X Y]
运行结果:
X =
1 2 3 4 5
Y =
6 7 8 9 10
Z =
1 2 3 4 5 6 7 8 9 10
2.1.4创建行向量
- 直接产生
创建包含指定元素的行向量。
A=[1 3 5 7 9 11 ]
- 利用冒号表达式产生
x=a:h:b 创建从a开始,以h为步长,到b结束的行向量,缺省时h=1。
A=1:10
B=0:2:10
%运行结果:
A =
1 2 3 4 5 6 7 8 9 10
B =
0 2 4 6 8 10
- 利用函数 linspace(a,b,n) 生成
与 a:(b-a)/(n-1):b 等价,创建从a开始,到b结束,有n个元素的行向量。
A=linspace(1,10,10)
B=1:(10-1)/(10-1):10
%运行结果:
A =
1 2 3 4 5 6 7 8 9 10
B =
1 2 3 4 5 6 7 8 9 10
2.1.5创建列向量
以空格或逗号分隔的元素指定的是不同列的元素,而以分号分隔的元素指定了不同行的元素。
- 直接产生
A=[1; 2; 3; 4]
- 转置产生
A=[1 2 3 4]’
2.2 元素的提取
2.2.1矩阵单个元素的提取
利用小括弧和元素所在的位置下标实现。
- A(i, j):矩阵 A 中的第 i 行 第 j 列元素。
- A(i):矩阵 A 中的第i个元素,它表示矩阵A中从第一列开始从上到下数,接着在从第二列 开始从上到下数,依次下去,直到数到第 i 个。
A=[ 1,2,3,4;
4,5,6,7;
5,7,9,0]
b1= A(3,2)
b2=A(4)
运行结果:
b1 =
7
b2 =
2
2.2.2矩阵多个元素的提取
利用冒号运算符实现。
- A(:)或 A(:,:) 提取A的所有元素
- A(:,k) 提取 A的第 k 列全部元素
- A(k,:) 提取A的第 k 行全部元素
- A(:,k:m) 提取A的第 k列 到第 m 列元素
- A(i:j,:) 提取A的第 i 行到第 j 行元素
- A(i:j,m:n) 提取 A 的第 i 到第 j 行和第 m 到第 n 列交叉线上的元素组成的子矩阵。
- A(k:m) 提取A的第 k 到第 m 个元素
2.2.3向量元素的提取
- 提取一个元素: x(i)表示提取向量x的第i个元素.
- 提取一块元素: x (a :b :c)表示提取向量x的从第a个元素开始,以b为步长,到第c个元素(但不超过c)结束的这些元素,b可以为负数,b缺省时为1.
- 直接使用元素编址序号: x([a b c d]) 表示提取向量x的第a、b、c、d个元素构成一个新的向量 [x(a) x(b) x© x(d) ]。
2.3 矩阵操作函数
- size(A)
求出矩阵 A 的行数和列数 - length(x)
返回向量 X 的长度 - A’
共轭转置 - A.’
转置,矩阵元素不取共轭 - 删除单个矩阵元素
如要删除单个元素不能用 A(1,2)=[ ]; 可用A(4)=[ ],不过剩下的元素将排成一组数,而非矩阵。
A=[1 2 3;
4 5 6;
7 8 9]
A(4)=[]
运行结果:
A =
1 4 7 5 8 3 6 9
- 删除矩阵的一列
A=[1 2 3;
4 5 6;
7 8 9]
A(:,2)=[]
运行结果:
A=
1 3
4 6
7 9
- max(A) 求A各列最大元素
- min(A) 求A各列的最小值
- mean(A) 求A各列的平均值
- sum(A) 求A各列元素之和
- prod(A) 求A的各列元素之积
- sort(A) 使A各列元素按递增排序
- median(A) 求A各列的中位元素
- std(A) 求A各列的标准差
- var(A) 求A各列的方差
- find(A) 找出矩阵A中非零元素所在的下标
- find(条件) 找出符合条件的元素所在的位置
- diag(A) 提取矩阵A 的主对角线上元素,生成一个列向量
- diag(A,k) 提取矩阵A第k条对角线的元素
- diag(V) 以向量V的元素为主对角线上的元素构造的对角矩阵
- diag(V,k) 以向量V的元素为第k条对角线上的元素的构造的对角阵
【 3. 运算 】
3.1 基本运算
- 加:+
- 减:-
- 乘:*
- 共轭转置:’
- 左除:\ ,如:15\3=0.2
- 右除:/ ,如:15/3=5
- 乘方:^
对于矩阵:A/B=AB-1,A\B=A-1B
3.2 点运算
两矩阵进行点运算是指它们的对应位置上的元素进行相关运算,要求两矩阵的维数相同。
- 点乘:.*
- 点除:./ 、.\
- 点加:.+
- 点减:.-
- 点非共轭转置:.’
3.3 关系运算
- 小于<、小于或等于<=、大于>、大于或等于>=、等于==、不等于~= 。
- 当两个比较量都是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。
- 当两个维数相同的矩阵比较时,相同位置上的元素按标量关系运算规则逐个进行。
- 当参与比较的一个是标量,而另一个是矩阵时,把标量与矩阵的每一个元素按标量关系运算规则逐个比较。
3.4 逻辑运算
与&、或|、非~。
- 在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示。
- 当参与逻辑运算的是两个标量a和b,那么,
a&b:a,b全为非零时,结果为1,否则为0。
a|b : a,b中只要有一个非零,结果为1。
~a: 当a是零时,结果为1;当a非零时,结果为0。 - 当两个维数相同的矩阵做逻辑运算 时,相同位置上的元素按标量关系运算规则逐个进行。
- 当参与逻辑运算的一个是标量,而另一个是矩阵时,把标量与矩阵的每一个元素按标量关系运算规则逐个进行。
3.5 运算符的优先级
算术 >关系 >逻辑
【 4. 结构 】
4.1 选择结构
x=0;
if x>0
y=1;
else if x<0
y=-1;
else
y=0;
end
end
4.2 循环结构
sum=0;
for i=1:1:10
sum=sum+i;
end
sum=0;
i=1;
while i<=100
sum=sum+i;
i=i+1;
end
4.3 分支结构
n = input('n=')
switch mod(n,2)
case 1
A = ‘odd’
case 0
A = ‘even’
otherwise
A = ‘null’
end
【 5. 图形显示 】
5.1 曲线
- 线上点的形状
+ 加号
o 圆圈
* 星号
. 实心点
x 叉号
s 正方形
d 钻石形
^ 上三角形
v 下三角形
< 左三角形
p 五角星形
h 六角星形
- 线的颜色
r 红
g 绿
b 蓝
c 青绿
m 洋红
y 黄
k 黑
w 白
- 线型
- 实线
-- 虚线(线状)
: 虚线(点状)
-. 点划线(点+线)
- 序列图
X = linspace(0,2*pi,50)';
Y = cos(X);
stem(X,Y)
- 曲线图
x=linspace(0,2*pi,30);
y=sin(x);
plot(x,y);
5.2 标题
- 标题的变量显示
A=1;
x=linspace(0,2*pi,30);
y=sin(x);
plot(x,y);
title(['A=',num2str(A)]);
- 标题的换行
A=1;
B=2;
x=linspace(0,2*pi,30);
y=sin(x);
plot(x,y);
title({['A=',num2str(A)],['B=',num2str(B)]});
5.3 坐标轴
- 坐标轴的限阈显示
x=linspace(0,2*pi,30);
y=sin(x);
plot(x,y);
axis([-2 2*pi -2 2]);
5.4 图例
x=linspace(0,2*pi,30);
y=sin(x);
z=cos(x);
plot(x,y,"r+",x,z,"b.-");
legend("y","z");
5.5 网格
x=linspace(0,2*pi,30);
y=sin(x);
plot(x,y);
grid on;
【 6. 常用函数小结 】
- randi()
- randi([imin,imax],m,n) :返回一个mxn矩阵,其中包含从区间 [imin,imax] 的均匀离散分布中得到的整数。
- randi([imin,imax],n) :返回一个nxn矩阵,其中包含从区间 [imin,imax] 的均匀离散分布中得到的整数。
- rand(a,b)
生成区间 (0,1) 内均匀分布的随机数字组成的 axb 列矩阵。
均值=0.5,方差=1/12=0.08333。 - k*rand(a,b)
生成区间 (0,k) 内服从均匀分布的随机数字组成的 axb 列矩阵。
均值=0.5*k - j+k*rand(a,b)
生成区间 (0,k) 内服从均匀分布的随机数字组成的 axb 列矩阵。
均值=0.5*k - randn(a,b)
生成服从正态分布的随机数字组成的 axb 列矩阵。
均值=0,方差=1。 - a+b*randn(a,b)
生成服从正态分布的随机数字组成的 axb 列矩阵。
均值为 a,方差为 b2 。 - sum()
sum(A,dim); A表示矩阵; dim=1表示每一列进行求和;dim= 2表示每一 行进行求和;不指定dim时,也表示对每一列进行求和。 - abs()
返回数值的绝对值或复数的幅值。 - pskmod()
pskmod(x,M):相移键控PSK调制方法调制信号x,M为指定调制阶数。 - pskdemod()
pskdemod(x,M):相移键控PSK解调方法解调信号x,M为指定解调阶数。 - find()
- ind = find(X)
找出矩阵X中的所有非零元素,并将这些元素的线性索引值(linear indices:按列)返回到向量ind中。如果X是一个行向量,则ind是一个行向量;否则,ind是一个列向量。如果X不含非零元素或是一个空矩阵,则ind是一个空矩阵。 - ind = find(X, k) 或 ind = find(X, k, ‘first’)
找到前K个不为0的线性索引值。k必须是一个正数,但是它可以是任何数字数值类型。 - ind = find(X, k, ‘last’)
找到后k个不为零元素的线性索引值。
- ind = find(X)