完整版教程下载地址: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
117
>> A(3,:)
ans =9     7     6    12     0
  • 使用冒号运算符,用户可以获得一个等间距序列,冒号隔开的数值分别表示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的简单使用方法,后面复杂的使用需要大家多查手册,多练习。

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

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

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

  2. 【STM32F407的DSP教程】第18章 DSP控制函数-更好用的SIN,COS计算

    完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第18章       DSP控制函数-更好用的SIN,COS ...

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

    完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第37章       STM32F407的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. 【STM32F407的DSP教程】第28章 FFT和IFFT的Matlab实现(幅频响应和相频响应)

    完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第28章       FFT和IFFT的Matlab实现(幅 ...

  8. 【STM32F407的DSP教程】第22章 DSP矩阵运算-放缩,乘法和转置矩阵

    完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第22章       DSP矩阵运算-放缩,乘法和转置矩阵 ...

  9. 【STM32F407的DSP教程】第48章 STM32F407的中值滤波器实现,适合噪声和脉冲过滤(支持逐个数据的实时滤波)

    完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第48章       STM32F407的中值滤波器实现,适 ...

最新文章

  1. 保存csv时, 不保留index
  2. Spring+Velocity中模板路径的问题
  3. 专用计算机系统是,计算机系统是什么
  4. hdu1521(指数母函数)
  5. INT(M)表示什么意思?
  6. 【1】flink-source读取数据
  7. luoguP3185 [HNOI2007]分裂游戏 枚举 + 博弈论
  8. 卡在linuxctrld进系统_电脑系统出现问题怎么办?学会这七招,电脑系统问题不求人!...
  9. python 多列对齐_python – 如何连接两个数据帧并在这样的特定列上对齐?
  10. mysql innodb 分区_MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)
  11. 【浙大第19届校赛:G】Postman(贪心)
  12. MapGIS数据中心是什么?
  13. Vue 项目(网站应用)接入QQ互联qq登录接口 汇总
  14. 结构体定义的几种形式
  15. android 录屏工具,android实现录屏小功能
  16. 《软件测试》第二章 软件开发的过程
  17. 如何查看服务器bmc信息,服务器查看bmcip地址
  18. 我在哪?要到哪里去?怎么去?
  19. python基_python之地基(一)
  20. 市场因子(Market Factor)——投资组合分析(EAP.portfolio_analysis)

热门文章

  1. 用html做个猜字游戏,HTML5 Canvas API制作简单的猜字游戏
  2. greedy策略求解活动选择问题 ActivitySelectProblem
  3. memcpy越界引起的segment fault
  4. 冰河联合猫大人又出版一本分布式事务领域的开山之作,这是要再次起飞了吗?
  5. mysql去掉字段中的中文括号及括号中的内容
  6. Bootstrap栅格布局分析grid源码
  7. live555 android,live555
  8. 新建网站如何跟服务器连接,flashfxp怎么用(新建添加网站[站点]连接)
  9. border-radius没有效果
  10. 机器学习基础笔记(自用)