第3章

Matlab 简易使用(一)

本期教程开始讲解Matlab的简易使用,作为学习DSP的必备软件,掌握简单的Matlab操作是必须的。

3.1 Matlab界面说明

3.2 矩阵和阵列

3.3 检索矩阵中的数据

3.4 工作区中的数据保存和加载

3.5 字符串

3.6 函数

3.7 绘图功能

3.8 总结

3.1

Matlab界面说明

lCurrentFolder

用于访问电脑中的文件。

lCommand Window

用于输入命令,公式计算等也可以在这里进行。

lWorkspace

浏览用户创建的数据或者从文件中导入的数据。

lCommand History

记录用户在command窗口输入的命令,双击这些历史命令可以返回到command窗口继续执行。

下面通过简单的例子说明一下command窗口的使用。

3.1.1简单计算

1.在command窗口输入变量a =1,然后回车,再次输入a,然后回车

第一次输入a = 1并回车后会将变量a及其数值加入到Workspace中。

第二次输入a 并回车后会将变量a以前的赋值显示出来。

3.1.2稍复杂计算

在command窗口输入以下计算

注意:上面输入一行后加入了分号,这个分号很重要,加上分号后再回车就可以输入下个计算。要不会输出计算结果。在需要获得结算结果的时候,就不再需要这个分号了,直接回车即可。

如果没有结果变量的话,输出会是ans = xxx(使用ans作为输出变量) 。

3.1.3历史命令行调用

历史命令行的调用除了可以在右下角的Command里面调用以外,还可以通过键盘上面的按键↑ 和 ↓实现历史命令的查询。

3.2

矩阵和阵列

Matlab的一个缩写就是"matrix laboratory"(矩阵实验室),虽然其它编程语言与数字一起工作,Matlab的主要设计是对整个矩阵和数组操作。

不管什么类型的数据,所有MATLAB的变量是多维数组,。矩阵是一个二维阵列通常用于线性代数。

3.2.1创建数组

下面在matlab中创建一个一行四列的数组,数组中的每个元素用逗号或者空格分开。比如创建数组

这种类型的数组也称为行向量。

下面创建一个多行的矩阵,不同的行用分号隔开

当然,也可以使用Matlab自带的函数进行创建,比如ones,zeros,rand等

3.2.2矩阵和阵列运算

MATLAB允许客户使用一个单一的算术运算符或函数来处理所有在矩阵中的值。比如:

下面继续说一下matlab矩阵的转置,求逆矩阵。

1.给矩阵a加上符号a'用于求逆矩阵。

2.inv()用于求逆矩阵。

3.矩阵a乘以a的逆矩阵就是求单位矩阵。

注意上面的a*inv(a)得到的结果已经不再是整数矩阵,Matlab存储结果的时候会以浮点的形式进行存储,Matlab实际存储的数值和当前命令窗口显示的数值是有区别的。为了获得更高的显示精度可以使用下面的数据格式

执行逐个元素乘法,而不是矩阵的乘法可以使用符号 .* 来实现

>> a.*a

ans =

1 4 9

16 25 36

49 64 100

下面是实现矩阵各个元素的3次方

>> a.*a

ans =

1 4 9

16 25 36

49 64 100

3.2.3矩阵的合并

矩阵的合并主要有以下两种形式:

>>A = [a,a]

A =

1 2 3 1 2 3

4 5 6 4 5 6

7 8 10 7 8 10

>>A = [a; a]

A =

1 2 3

4 5 6

7 8 10

1 2 3

4 5 6

7 8 10

3.2.4复数

复数的表示是由实部和虚部组成的,比如我们在matlab命令窗口输入:

>>sqrt(-1)

ans =

0 + 1.0000i

为了表示复数的虚部,可以使用i或者j来表示:

>>c = [3+4i,4+3j,-i,10j]

c =

3.0000 + 4.0000i 4.0000 + 3.0000i 0 - 1.0000i 0 +10.0000i

3.3

检索矩阵中的数据

有时矩阵中的元素比较多,为了方便用户可以检索矩阵中所需要查找的元素,调用相关命令即可。比如:先用magic函数生成4阶幻方矩阵:

>>A = magic(4)

A =

16 2 3 13

5 11 10 8

9 7 6 12

4 14 15 1

l如果我们要获得第4行第2列的数据,可以采用如下的方法:

>>A(4,2)

ans =

14

l简单点,也可以使用如下方法进行定位:

>>A(8)

ans =

14

l如果检索超出了矩阵的范围,会报错,如下:

>> test = A(4,5)

Attempted to access A(4,5); index out of bounds becausesize(A)=[4,4].

l用户可以通过如下方法增加行和列

>> A(5,5) = 14

A =

16 2 3 13 0

5 11 10 8 0

9 7 6 12 0

4 14 15 1 0

0 0 0 0 14

l用户可以通过如下方法访问某行某列的某些数据

>> A(1:3,2)

ans =

2

11

7

>> A(3,:)

ans =

9 7 6 12 0

l使用冒号运算符,用户可以获得一个等间距序列,冒号隔开的数值分别表示:start:step:end

>> B = 0:10:100

B =

Columns 1 through 10

0 10 20 30 40 50 60 70 80 90

Column 11

100

如果不设置step,那么输出结果默认步是1。

3.4

工作区中的数据保存和加载

工作区中的变量来自用户创建,外部数据加载或者其它的编程加入。比如我们在命令窗户输入以下两个函数。

>> A = magic(4);

B = rand(3,5,2);

通过命令whos可以查看工作区中的变量内容。

>> whos

Name Size Bytes Class Attributes

A 4x4 128 double

B 3x5x2 240 double

工作区中的变量如下,和通过命令whos查看的效果是一样的。

如果用户退出Matlab后,再次进入工作区中,那么里面的数据变量将被清空。如果想保持这些变可以

通过如下命令进行保存:

>> save myfile.mat

下次打开MATLAB可以通过如下命令加载这些变量:

>>load myfile.mat

另外用户可以通过命令clear清除当前工作区中的变量。

3.5

字符串

l在matlab中显示字符串跟使用C不一样,matlab中使用单引号即可。比如:

>> myText = 'Hello, world'

myText =

Hello, world

>> otherText = 'You''re right'%特别的注意这里,显示单引号需要写两个才可以。

otherText =

You're right

>> whos

Name Size Bytes Class Attributes

myText 1x12 24 char

otherText 1x12 24 char

l如果想合并两个字符串可以用如下的方法:

>> longText = [myText,' - ',otherText]

longText =

Hello, world - You're right

l如果想把数字转换成字符串显示,可以用函数num2str或者int2str.

>> f = 71;

c = (f-32)/1.8;

tempText = ['Temperature is ',num2str(c),'C']

tempText =

Temperature is 21.6667C

3.6

函数

MATLAB支持的函数非常多,下面举一个简单的例子说明下,后面具体用到那个函数查阅手册即可。

>> A = [1 3 5];

B = [10 6 4];

>> max(A)%求最大值

ans =

5

>> max(A,B)%求A,B中的最大值

ans =

10 6 5

>> maxA = max(A)%将最大值付给maxA

maxA =

5

>> [maxA,location] = max(A)%将最大值和次最大值赋给两个变量

maxA =

5

location =

3

l显示任何字符串可以调用函数:

>> disp('hello armfly')

hello armfly

l命令窗口数据的清除可以使用命令

>>clc

3.7

绘图功能

Matlab的绘图功能非常强劲,下面分别简单介绍下。

3.7.1画线

下面使用绘图功能创建一个二维图:

>> x = 0:pi/100:2*pi;

y = sin(x);

plot(x,y)

通过如下函数可以给绘图加上标题:

>> x = 0:pi/100:2*pi;

y = sin(x);

plot(x,y);

xlabel('x');

ylabel('sin(x)');

title('Plot of the Sine Function')

通过函数plot(x,y,'r--')可以改变曲线的颜色和显示方式。

如果想把两个波形显示在一个图中,可以采用函数hold on,如下所示:

>> x = 0:pi/100:2*pi;

y = sin(x);

plot(x,y)

hold on

y2 = cos(x);

plot(x,y2,'r:')

legend('sin','cos')

3.7.23-D绘图

Matlab也支持3-D绘图,下面举一个简单的例子,主要是为了说明显示效果。

>> [X,Y] = meshgrid(-2:.2:2);

Z = X .* exp(-X.^2 - Y.^2);

surf(X,Y,Z)

3.7.3多个子图的绘制

Matlab也支持在一幅图中绘制多个子图片,主要是通过函数subplot实现。

>> t = 0:pi/10:2*pi;

[X,Y,Z] = cylinder(4*cos(t));

subplot(2,2,1); mesh(X); title('X');

subplot(2,2,2); mesh(Y); title('Y');

subplot(2,2,3); mesh(Z); title('Z');

subplot(2,2,4); mesh(X,Y,Z); title('X,Y,Z');

3.8

总结

本期主要跟大家讲解了Matlab的简单使用方法,后面复杂的使用需要大家多查手册,多练习。

matlab中whos怎么用,【安富莱DSP教程】第3章 Matlab 简易使用(一)相关推荐

  1. matlab设计窄带滤波器,【安富莱DSP教程】第36章 FIR滤波器的Matlab设计

    第36章 FIR滤波器的Matlab设计 本章节讲解FIR滤波器的Matlab设计.主要是函数fir1和fir2的使用. 36.1 窗函数 36.2 fir1函数 36.2 fir2函数 36.4 总 ...

  2. 【安富莱专题教程第8期】基于emWin模拟器的USB BULK上位机开发,仅需C即可,简单易实现...

    说明: 1.如果你会emWin话的,就可以轻松制作上位机.做些通信和控制类上位机,比使用C#之类的方便程度一点不差,而且你仅会C语言就可以. 2.并且成功将emWin人性化,可以做些Windows系统 ...

  3. 《安富莱嵌入式周报》第285期:电子技术更新换代太快,我要躺平,Linux内核6.1已经并入RUST,一夜161个网站密码遭泄,Matlab精选课件,开源电子书

    往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - P ...

  4. 《安富莱嵌入式周报》第268期:2022.05.30--2022.06.05

    往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - P ...

  5. 《安富莱嵌入式周报》第312期:开源磁场照相机,仿生神经元PCB,开源无线耳机,手机系统PalmOS移植到各种单片机,开放系统组装协议OSAP

    周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Pow ...

  6. 《安富莱嵌入式周报》第272期:2022.06.27--2022.07.03

    往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - P ...

  7. 《安富莱嵌入式周报》第284期:Matlab2022b发布,支持从 .NET 调用,耳机放大器,牛屎芯片替换,JSON可视化,开源的飞行软件和嵌入式系统框架

    往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - P ...

  8. 《安富莱嵌入式周报》第314期:微软推出开源DeviceScript编程语言适合低资源单片机,开源色度计,超声波穿戴设备,USB-C交换机,CMSIS V6.0

    周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Pow ...

  9. 《安富莱嵌入式周报》第313期:搬运机器人,微软出的C语言手册,开源生物信号采集板,开源SMD回流焊,开源SDR无线电,汽车级机器人评估板

    周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Pow ...

  10. 安富莱C语言编码规范

    本文为博主根据安富莱电子论坛的帖子整理而成,如有侵权,可联系删除 目录 1--文件与目录 2--排版 3 --注释 4 --可读性 5--变量.结构.常量.宏 6--函数 7.完整pdf文档下载链接 ...

最新文章

  1. 图像降维之MDS特征抽取方法
  2. LibTorch NMS
  3. Spring 事务core 模块-RowMapper
  4. PageLayoutControl的基本操作
  5. 全球首富贝索斯离婚第二天 出轨对象女主播宣布离婚...
  6. stringr | 文本处理方法(Ⅰ-1):字符串处理函数(上)
  7. 5.2 C++中的原子操作和原子类型
  8. JAVA基础第四章-集合框架Collection篇
  9. 【个人提升】如何克服惰性
  10. 《迅雷链精品课》第十课:共识算法理论基础
  11. 回射程序改进3——消息的群发
  12. CSS揭秘:6.复杂的背景图案(下)
  13. OpenCV 形态学操作应用——提取水平与垂直线
  14. 设计模式常用的七大原则总结
  15. 利用Power BI制作RFM客户分析模型
  16. rstudio找不到r低版本_R学习笔记-安装R和RStudio,注意RStudio的版本需要与操作系统版本匹配...
  17. 教你彻底屏蔽百度的广告与智能推荐
  18. CSA创建用户以及组、管理用户密码、简单用户身份切换
  19. 集精准翻译与学习助手于一身 搜狗翻译APP实现重磅升级
  20. 辽宁省内计算机专业本科大学排名,辽宁省本科院校排名

热门文章

  1. 【数据统计】移动端数据可视化模板、数据统计、Axure移动端图表数据统计设计
  2. 如何学习摸具设计?怎样学习摸具设计?学习摸具设计的方法。
  3. 黑苹果之技嘉(GIGABYTE)主板BIOS设置篇
  4. FlashFXP中文破解 指南
  5. 黑苹果固态硬盘_三款小软件解决MacOS黑苹果下电脑固态硬盘测速难题
  6. ABB机器人伺服电机维修故障
  7. 将网页内容保存为PDF及为PDF创建多级书签
  8. matlab 批量取消注释,MATLAB中多行注释以及取消的快捷键
  9. 记录VS在线安装下载慢的解决
  10. 移动端浏览器识别PHP,PHP判断访客是否移动端浏览器访问