完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547

第3章   Matlab简易使用之基础操作

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

目录

第3章   Matlab简易使用之基础操作

3.1   初学者重要提示

3.2   Matlab界面说明

3.2.1  简单计算

3.2.2  稍复杂计算

3.2.3  历史命令行调用

3.3   Matlab矩阵和阵列

3.3.1  创建数组

3.3.2  矩阵和阵列运算

3.3.3  矩阵的合并

3.3.4  复数

3.4   Matlab检索矩阵中的数据

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

3.6   Matlab字符串

3.7   Matlab函数

3.8   Matlab绘图功能

3.8.1  画线

3.8.2  3-D绘图

3.8.3  多个子图的绘制

3.9   总结


3.1   初学者重要提示

  1. 本章主要介绍了matlab的基础操作,如果之前没有接触过这方面的知识,务必要实际动手操作。

3.2   Matlab界面说明

  • 当前文件夹(Current  Folder)

用于访问电脑中的文件。

  • 命令窗口(Command Window)

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

  • 工作区(Workspace)

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

  • 命令历史记录(Command History)

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

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

3.2.1  简单计算

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

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

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

3.2.2  稍复杂计算

在command窗口输入以下计算:

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

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

3.2.3  历史命令行调用

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

3.3   Matlab矩阵和阵列

Matlab的主要设计是对整个矩阵和数组操作。不管什么类型的数据,所有MATLAB的变量是多维数组。矩阵是一个二维阵列通常用于线性代数。

3.3.1  创建数组

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

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

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

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

3.3.2  矩阵和阵列运算

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

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

  1. 给矩阵a加上符号a'用于求转置矩阵。
  2. inv()用于求逆矩阵。
  3. 矩阵a乘以a的逆矩阵就是求单位矩阵。

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

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

>> a.*a
ans =1     4     916    25    3649    64   100

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

>> a.*a
ans =1     4     916    25    3649    64   100

3.3.3  矩阵的合并

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

>>A = [a,a]
A =1     2     3     1     2     34     5     6     4     5     67     8    10     7     8    10>>A = [a; a]
A =1     2     34     5     67     8    101     2     34     5     67     8    10

3.3.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.4   Matlab检索矩阵中的数据

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

>>A = magic(4)
A =16     2     3    135    11    10     89     7     6    124    14    15     1
  • 如果我们要获得第4行第2列的数据(注意,行列从1开始算的),可以采用如下的方法:
>>A(4,2)
ans =
14
  • 简单点,也可以使用如下方法进行定位:
>>A(8)
ans =14
  • 如果检索超出了矩阵的范围,会报错,如下:
>> test = A(4,5)
Attempted to access A(4,5); index out of bounds because size(A)=[4,4].
  • 用户可以通过如下方法增加行和列
>> A(5,5) = 14
A =16     2     3    13     05    11    10     8     09     7     6    12     04    14    15     1     00     0     0     0    14
  • 用户可以通过如下方法访问某行某列的某些数据
>> A(1:3,2)
ans =
2
11
7
>> A(3,:)
ans =9     7     6    12     0
  • 使用冒号运算符,用户可以获得一个等间距序列,冒号隔开的数值分别表示start:step:end
start:step:end
>> B = 0:10:100
B =Columns 1 through 100    10    20    30    40    50    60    70    80    90Column 11100

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

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

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

>> A = magic(4);
B = rand(3,5,2);

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

>> whosName      Size             Bytes  Class     AttributesA         4x4                128  double              B         3x5x2              240  double

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

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

通过如下命令进行保存:

>> save myfile.mat

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

>>load myfile.mat

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

3.6   Matlab字符串

  • 在matlab中显示字符串跟使用C不一样,matlab中使用单引号即可。比如:
>> myText = 'Hello, world'
myText =
Hello, world>> otherText = 'You''re right'   %特别的注意这里,显示单引号需要写两个才可以。
otherText =
You're right>> whosName           Size            Bytes  Class    AttributesmyText         1x12               24  char               otherText      1x12               24  char   
  • 如果想合并两个字符串可以用如下的方法:
>> longText = [myText,' - ',otherText]
longText =
Hello, world - You're right
  • 如果想把数字转换成字符串显示,可以用函数num2str 或者int2str.
>> f = 71;
c = (f-32)/1.8;
tempText = ['Temperature is ',num2str(c),'C']
tempText =
Temperature is 21.6667C

3.7   Matlab函数

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
  • 显示任何字符串可以调用函数:
>> disp('hello armfly')hello armfly
  • 命令窗口数据的清除可以使用命令
>>clc

3.8   Matlab绘图功能

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

3.8.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 ony2 = cos(x);
plot(x,y2,'r:')
legend('sin','cos')

3.8.2  3-D绘图

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

>>  [X,Y] = meshgrid(-2:.2:2);
Z = X .* exp(-X.^2 - Y.^2);
surf(X,Y,Z)

3.8.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.9   总结

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

【STM32H7的DSP教程】第3章 Matlab简易使用之基础操作相关推荐

  1. 【STM32F407的DSP教程】第3章 Matlab简易使用之基础操作

    完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第3章   Matlab简易使用之基础操作 本期教程开始讲解 ...

  2. 【STM32F429的DSP教程】第3章 Matlab简易使用之基础操作

    完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第3章   Matlab简易使用之基础操作 本期教程开始讲解 ...

  3. 【STM32H7的DSP教程】第38章 STM32H7的FIR高通滤波器实现(支持逐个数据的实时滤波)

    完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第38章       STM32H7的FIR高通滤波器实现( ...

  4. matlab 2009a使用教程,实验一 安装MATLAB R2009a软件及其简单操作

    实验一安装MATLAB R2009a软件及其简单操作 一.实验目的 1.掌握MATLAB R2009a软件的安装. 2.熟悉启动和退出matlab的方法. 3.熟悉matlab命令窗口的组成. 4.掌 ...

  5. 【Matlab 图像】图像基础操作

    图像基础操作 读取图片 读取视频 读取图片 % 读取图像 Img = imread('test2.png'); subplot(2,2,1); imshow(Img); title('原图(RGB图) ...

  6. axure操作回复_Axure8.0基础教程(31-40)新手必须掌握的基础操作

    新手必须掌握的Axure基础操作,初学者应在掌握本篇内容后再进行实战案例篇的学习,以免产生学习障碍.同时,建议具备一定基础的读者学习本篇中相对生疏的内容,并加以掌握.本文转载自小楼老师博客:http: ...

  7. 【STM32H7的DSP教程】第32章 STM32H7的实数FFT的逆变换(支持单精度和双精度)

    完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第32章       STM32H7的实数FFT的逆变换(支 ...

  8. 【STM32H7的DSP教程】第50章 STM32H7的样条插补实现,波形拟合丝滑顺畅

    完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第50章       STM32H7的样条插补实现,波形拟合 ...

  9. 【STM32H7的DSP教程】第11章 DSP基础函数-绝对值,求和,乘法和点乘

    完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第11章       DSP基础函数-绝对值,求和,乘法和点 ...

  10. matlab 判断两个矩阵有元素相等_Matlab入门教程 第 1 章 Matlab基础知识之基本运算...

    1.6 Matlab 基本运算 Matlab 包含三种运算:算术运算.关系运算和逻辑运算. 1.6.1 算术运算 ① 基本算术运算 基本算术运算符:+.-.*./(右除).\(左除).^(乘方) ? ...

最新文章

  1. hbase全分布安装配置
  2. numpy.linspace详解
  3. Windows最全快捷键
  4. 关于json 转换BigDecimal精度丢失问题
  5. java 编写代码_如果您在2016年编写过Java代码-这是您不容错过的趋势
  6. 前端学习(2888):如何短时间内实现v-for 模板编译1
  7. 很漂亮个人主页自带音乐源码
  8. Spring.Net学习笔记九(自定义对象行为)
  9. VB6.0如何使用正则表达式
  10. 【滤波器】基于matlab GUI FIR+IIR数字滤波器设计【含Matlab源码 324期】
  11. 论PRINCE2认证的优势是什么?
  12. 金融衍生品软件产品设计必备知识——外汇相关知识
  13. 360度环绕式全景 微软photosynth震撼体验
  14. 微信多开设置网络代理服务器,微信多开终极技巧,可随意控制数量已亲测很好用...
  15. 解决 win10 鼠标右键一直转圈问题
  16. c语言开发ios应用程序,马上着手开发iOS应用程序:三、应用开发基础
  17. python与SQL学习比较
  18. 全国软件2. 三人年龄
  19. 整型和字符串相互转换
  20. 表格练习(工商银行电子汇款单)表单练习(用户注册)

热门文章

  1. Java实现阿里云短信验证码发送
  2. Windows 下快速删除大量文件的办法
  3. Arcgis软件应用(四)网络分析
  4. c#入门经典第6版pdf百度云盘_C#入门经典第6版中文pdf_NET教程
  5. cisp-pte渗透工程师考试总结
  6. stata计量之前数据清洗的必备步骤
  7. 毕设使用EndNote管理Word文献
  8. js实现数字转化为大写金额——js技能提升
  9. 没有人能拒绝这个网站,没有人!!!
  10. 转载:C语言运算符优先级记忆口诀