许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  MATLAB应用笔记:实战技巧与常见问题记录

MATLAB应用笔记:实战技巧与常见问题记录

阅读数 25
点赞 0
article_banner

【 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()
  • 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()

  • 免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空