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

article/2025/10/7 13:08:44

完整版教程下载地址: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的简单使用方法,后面复杂的使用需要大家多查手册,多练习。

 


http://chatgpt.dhexx.cn/article/LUdv0UZb.shtml

相关文章

[经验] 【安富莱——DSP教程】第7章 DSP定点数和浮点数(重要)

http://bbs.elecfans.com/jishu_486119_1_1.html 7.1 定点数和浮点数概念 如果小数点的位置事先已有约定,不再改变,此类数称为“定点数”。相比之下,如果小数点的位置可变,则称为“浮点数”(定点数的本质是小数…

【STM32F407的DSP教程】第21章 DSP矩阵运算-加法,减法和逆矩阵

完整版教程下载地址:http://www.armbbs.cn/forum.php?modviewthread&tid94547 第21章 DSP矩阵运算-加法,减法和逆矩阵 本期教程主要讲解矩阵运算中的初始化,加法,逆矩阵和减法。 目录 第21章 DSP矩阵运算-加…

【STM32H7的DSP教程】第17章 DSP功能函数-定点数互转

完整版教程下载地址:http://www.armbbs.cn/forum.php?modviewthread&tid94547 第17章 DSP功能函数-定点数互转 本期教程主要讲解功能函数中的Q7,Q15和Q31分别向其它类型数据转换。 目录 第17章 DSP功能函数-定点数互转 17.1 初学者…

【STM32F407的DSP教程】第19章 DSP复数运算-共轭,点乘和求模

完整版教程下载地址:http://www.armbbs.cn/forum.php?modviewthread&tid94547 第19章 DSP复数运算-共轭,点乘和求模 本期教程主要讲解复数运算中的共轭,点乘和模的求解。 目录 第19章 DSP复数运算-共轭,点乘…

【STM32F407的DSP教程】第1章 初学数字信号处理准备工作

完整版教程下载地址:http://www.armbbs.cn/forum.php?modviewthread&tid94547 第1章 初学数字信号处理准备工作 本期教程开始带领大家学习DSP教程,学习前首先要搞明白一个概念,DSP有两层含义,一个是DSP芯片也就是Digital…

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

完整版教程下载地址:http://www.armbbs.cn/forum.php?modviewthread&tid94547 第11章 DSP基础函数-绝对值,求和,乘法和点乘 本期教程开始学习ARM官方的DSP库,这里我们先从基本数学函数开始。本期教程主要讲绝对值&am…

c++中ifstream和ofstream的详细用法

TITLE:因为不经常用这两个操作,每次用都得找,网上的文章良莠不齐,有时候不容易找到合适的,故将其记录下来,供以后使用方便。 1. fstream fstream提供了三个类,用来实现c对文件的操作。&#x…

C++文件读取ifstream

使用ifstream流来读取文件 说明: 1.ifstream类的对象创建成功的时候会返回非空值,借此判断是否创建文件对象成功 2.ifstream有个函数eof()用来判断文件是否读到尾部,没读到尾部返回false,否则返回true。 若尾部有回车,那么最后一…

C++中读取文件ifstream、ofstream

现在&#xff0c;我想对一个utf-8的json文件进行读写操作。在此过程中&#xff0c;遇到了一些问题。 头文件的添加&#xff1a; #include <iostream> #include <cstring> #include <fstream> #include <sstream> &#xff08;一&#xff09;ifstrea…

C++ 文件读写操作std::ofstream和std::ifstream

文章目录 前言一、文件操作的介绍二、使用步骤1.读文件操作&#xff08;std::ifstream&#xff09;2.写文件操作&#xff08;std::ofstream&#xff09; 前言 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习…

C++ 中 ifstream读取txt文件内容

文章目录 头文件把txt文件放在当前目录下1、逐行读入文件2、逐个字符读入&#xff08;忽略空格与回车&#xff09;3、逐个字符读入&#xff08;包括空格与回车&#xff09;示例代码 头文件 #include <iostream> #include <fstream> #include <cassert> #inc…

【C++11】文件操作ifstreamofstream

文章目录 文件输入流创建ifstream对象读取文件数据 文件输出流文件流的打开模式创建ofstream对象写入文件数据 文件输入输出示例 文件输入流 创建ifstream对象 使用ifstream类创建ifstream对象&#xff0c;所获取的对象能够像cin一样使用>>运算符从所绑定文件中读取数据…

C++ ifstream eof()的使用

C ifstream eof() 的使用 eof() 的使用方法1 ifstream.eof() 读到文件结束符时返回true。 大家可能有一个误区&#xff0c;认为读到文件结束符就是读到文件的最后一个字符。 其实不然&#xff0c;文件结束符是文件最后一个字符的下一个字符0xFF&#xff0c;eof() 读到文件结束…

C++文件读写详解(ofstream,ifstream,fstream)

在看C编程思想中&#xff0c;每个练习基本都是使用ofstream,ifstream,fstream&#xff0c;以前粗略知道其用法和含义&#xff0c;在看了几位大牛的博文后&#xff0c;进行整理和总结&#xff1a; 这里主要是讨论fstream的内容&#xff1a; #include <fstream>ofstream …

c++输入文件流ifstream用法详解

目录 文章目录 输入流的继承关系&#xff1a;成员函数Public member functions 1&#xff0c; (constructor) 2&#xff0c;ifstream::open 3&#xff0c;ifstream:: is_open 4&#xff0c;ifstream:: close 5&#xff0c;ifstream:: rdbuf 6&#xff0c;ifstream:: operator …

ifstream的使用

fstream提供了三个类&#xff0c;用来实现c对文件的操作。&#xff08;文件的创建、读、写&#xff09;。 ifstream – 从已有的文件读入 ofstream – 向文件写内容 fstream - 打开文件供读写 文件打开模式&#xff1a; ios::in 只读 ios::out 只写 ios::app 从文件末尾开始写&…

c++ 输入文件流ifstream用法详解

文章目录 c 输入文件流ifstream用法详解输入流的继承关系&#xff1a;C 使用标准库类来处理面向流的输入和输出&#xff1a;成员函数Public member functions1. **(constructor)**2. **ifstream::open**3. **ifstream:: is_open**4. **ifstream:: close**5. **ifstream:: rdbuf…

计算机工业控制高职教材,计算机控制技术(21世纪高职高专系列规划教材)

导语 本书以工业控制计算机(IPC)为主线&#xff0c;理论联系实际&#xff0c;突出工程应用&#xff0c;阐述了计算机控制技术及其工程实现方法。全书分为8章&#xff0c;内容包括&#xff1a;计算机控制系统概述&#xff0c;计算机控制过程通道&#xff0c;数字控制技术&#x…

高职高专信息工程学院专业设置

学院全面落实立德树人根本任务,注重实习实训,着力培养德才兼备的技能型信息技术人才。与华为、腾讯、百度、阿里巴巴、新浪、搜狐、网易等多家知名IT企业合作,建成多所紧贴行业前沿的实习实训基地,保证人才培养与企业需求无缝对接。学院现有计算机应用技术、云计算技术应用…

湖北省高职计算机本科学校有哪些,盘点最新湖北十大高职高专院校排名,湖北最好的高职院校有哪些?...

高职高专就是高等职业学院和高等专科学校的简称&#xff0c;是专科(大专)层次的普通高等学校。简单点来说&#xff0c;高职高专院校就是职业技术教育&#xff0c;是职业技术教育的高等阶段。今天小编就来给大家盘点下最新湖北十大高职高专院校排名&#xff0c;湖北最好的高职院…