首页 > 其他分享 >MATLAB

MATLAB

时间:2024-03-29 21:13:10浏览次数:23  
标签:函数 元素 矩阵 MATLAB 数组 向量

MATLAB主要内容突击

参考资料:MATLAB 入门之旅 (mathworks.com)

命令

在命令的末尾添加分号将抑制输出,但仍会执行该命令,正如您在工作区中所看到的。当您输入命令而没有以分号结尾时,MATLAB 将会在命令提示符下显示结果。

>> x = 5 + 1
x = 
    6
>> x = 5 + 1;
% 不会输出(Ctrl+R注释本行)
%{
这是多行注释
%}

保存和加载变量

保存数据

您可以使用 save 命令将工作区中的变量保存到称为 MAT 文件的 MATLAB 特定格式文件中

如要将工作区保存到名为 foo.mat 的 MAT 文件中,请使用命令:

>> save foo

clear命令清空工作区变量

您可以使用 load 命令从 MAT 文件加载变量。

>> load foo

clear 函数清理工作区。clc 命令清理命令行窗口


当你关闭 MATLAB 时,工作区将被清空。可以使用 MAT 文件来保存变量。这样,当您重新打开 MATLAB 时,可以将变量加载到工作区中。

如果您只想加载或保存部分变量,可以使用函数的两个输入。尝试从文件 myData.mat 中仅加载变量 m

>> load myData m

然后尝试将变量 m 保存到名为 justm.mat 的新 MAT 文件中:

>> save justm m

使用内置函数

MATLAB 包含许多内置的函数,例如 abs(计算绝对值)和 eig(计算特征值),以及正余弦三角函数等

如果碰到一些实数处理不了的(如sqrt(-9)则会默认输出复数)

请注意,解包含虚数 i,这是 MATLAB 中的内置常量

在命令行窗口中仅显示前四个小数位。您可以使用 format 函数控制显示的精度。

请试着输入 format long 并显示 x 的值。

输入 format short 可切换回默认显示。


这里就用了long

MATLAB编辑器

可以将一系列命令整合起来做成一个实时脚本!

按Alt+Enter切换文本和代码模式

  • 可以点击执行以按顺序执行所有命令(结果默认在右边白框中)
  • 还可以分成节执行代码(能够点击右边看到左边执行成了这个代码)
  • 可以保存为mlx文件
  • 还可以保存为静态的PDF或HTML文档
  • 运行一节,别的节如果关联数据并不会实时更新,需要重新运行别节

这个实时脚本『相当于一个debugging的调试器』

向量和矩阵

先了解MATLAB中数组的概念

您可以使用方括号创建包含多个元素的数组

x = [3 5]
x = 
    3    5

当您用空格(或逗号)分隔数值时(如前面的任务中所示),MATLAB 会(默认)将这些数值组合为一个行向量,行向量是一个包含一行多列的数组 (1×n)。

当您用分号分隔数值时,MATLAB 会创建一个列向量 (n×1)。

例:

创建矩阵

您可以组合使用空格和分号创建一个矩阵,即包含多行多列的数组。输入矩阵时,您必须逐行输入它们。

例:

在 MATLAB 中,你甚至可以在矩阵的方括号内执行计算。

例:

MATLAB不要求空格缩进规范:

创建等间距向量

对于长向量,输入单个数值是不实际的。可用来创建等间距向量的替代便捷方法是使用 : 运算符并仅指定起始值和最终值:image-20231207180025777

请注意,当您使用冒号运算符时,不需要方括号(但写了也不会错)

: 运算符使用默认的间距 1,但是您可以指定您自己的间距,如下所示(自行更改步长)

注意:这里间距(步长)是两个:中间的那个数

x = 20:2:26
x = 
    20    22    24    26

创建含对应元素的向量

创建一个制定了含有指定元素数目的向量

如果您知道向量中所需的元素数目(而不是每个元素之间的间距),则可以改用 linspace 函数,语法:

linspace(first,last,number_of_elements)

➤注意!请使用逗号 (,) 分隔 linspace 函数的输入

最后一位是元素个数!

x = linspace(0,1,5)
x = 
    0    0.250    0.500    0.750    1.000

转置向量

linspace: 运算符都可创建行向量。但是,您可以使用转置运算符 (') 将行向量转换为列向量:

x = 1:3;
x = x'
x = 
    1
    2
    3

您可以通过在一条命令中创建行向量将其全部转置来创建列向量。

注意此处使用圆括号来指定运算的顺序。

x = (1:2:5)' % 先创建行向量
x = 
    1
    3
    5

数组创建函数

随机数矩阵

MATLAB 包含许多函数,可帮助您创建常用的矩阵,例如随机数矩阵:

创建一个取值0~1的随机数的矩阵

x = rand(2)
x = 
    0.8147    0.1270
    0.9058    0.9134

➤请注意rand(2) 命令中的 2 指定输出将为一个 2×2 的随机数矩阵。

许多矩阵创建函数允许您输入一个数值来创建方阵 (n×n),或者输入两个数值来创建非方阵(m×n)。

x = rand(2,3)
x = 
    0.6324    0.2785    0.9575
    0.0975    0.5469    0.9649

还可以使用randn()函数进行随机数数组的创建

二者区别

rand函数生成的是0到1之间均匀分布的随机数,即每个数的概率相等randn函数生成的是符合正态分布的随机数,即大部分数集中在平均值附近,呈钟形曲线分布

也可以使用randi(imax,sz1,sz2)进行创建

将生成一个随机数最大值imaxsz1xsz2的矩阵


零矩阵

利用zeros()可以创建一个包含(m×n)的以0为填充的矩阵[用法与上面一致]

壹矩阵

利用ones()可以创建一个包含(m×n)的以1为填充的矩阵[用法与上面一致]


对角矩阵

diag():创建对角矩阵或获取矩阵的对角元素

语法

x = diag(A,k)
% k可去,这样就变为了由向量决定的大小

如果A是向量,例:

使用 diag 创建一个包含 v主对角线上的元素的矩阵。

v = [2 1 -1 -2 -5];
D = diag(v)
D = 5×5

     2     0     0     0     0
     0     1     0     0     0
     0     0    -1     0     0
     0     0     0    -2     0
     0     0     0     0    -5

如果带上了k,即:

创建一个包含 v第一个上对角线 (k=1) 上的元素的矩阵。

D1 = diag(v,1)
D1 = 6×6

     0     2     0     0     0     0
     0     0     1     0     0     0
     0     0     0    -1     0     0
     0     0     0     0    -2     0
     0     0     0     0     0    -5
     0     0     0     0     0     0

如果A是矩阵

获取A矩阵的主对角线上的元素

A = randi(15,6,3)
C = diag(A)

加上k与上面同理


magic()

magic():生成幻方矩阵

M = magic(n) 返回由 1 的整数构成并且总行数和总列数相等n×n 矩阵。n 的阶数必须是大于或等于 3标量才能创建有效的幻方矩阵。

特征:每行每列每对角线之和相等


矩阵大小

可利用size()函数查看现有矩阵的大小:

您也可以使用一行代码创建与现有矩阵大小相同的随机矩阵。

rand(size(x))

可以用numel()函数返回数组中的元素数目

可以用length()函数返回矩阵(或数组中)每行的元素数目(列数)


数组(矩阵)重排

可用reshape()函数对一个数组或者矩阵进行重新排列

语法

B = reshape(A,sz)
B = reshape(A,sz1,...,szN)

其中,第一行sz单独用的话必须使用大小向量sz重构A以定义size(B)(例如reshape(A,[2,3])A 重构为一个 2×3 矩阵)sz中至少要包含2个元素

第二行则是要输入指定维度大小,由sz1,....,szN指定

可用用[]来指定任意一个维度大小(编译器会自动匹配自动计算)

例如,如果 A 是一个 10×10 矩阵,则 reshape(A,2,2,[])A 的 100 个元素重构为一个 2×2×25 数组。

如果A矩阵长度太大的话,可以用切片A(1:2)来指定

此时是从矩阵一列一列排序

当然也可以使用[A 0 0 0 0]类似这样的结构来填充不够的位数,例:

A = 1:10
B = reshape([A 0 0 0 0 0 0],4,4) 

因为新的矩阵是从上到下,从左到右进行填充的,填充位数不够以[]中的元素继续填充

索引和修改数组

索引

在MATLAB中,索引必是正数

索引除了数字之外,还可以是包含数字的变量和数组甚至矩阵

在MATLAB中,所有索引都从1开始

  • 如果你知道该元素的位置,可以直接利用赋值修改向量内的值:x(3)=1
  • 如果你想提取一个范围的值,可以用:号(类似于切片)

例:x(2:4)


如果你想要提取一个矩阵内的元素的话

得改为指定两个索引(第一个是行号,第二个是列号)

比较常见的时你需要提取一个矩阵的一行或者一列

这时候可以把列数或者行数换为:,表示全部这一列或者这一行:

『这里我们是提取了第一行全部列


您还可以使用 MATLAB 关键字 end 作为行或列索引来引用最后一个元素

例:y = A(end,2)将矩阵A的最后一行的第二个元素赋值给A

请注意,您可以将算术运算与关键字 end 结合使用。例如:y = A(end-1,end-2)是将A矩阵第倒数第二行的倒数第二列的元素赋值给y


➤注意!如果只对一个矩阵使用一种索引,它将按顺序从上到下遍历每列,例子:

假设data是个7x4的矩阵:

那么如果我们直接y = data(8)

y = 0.5300

提取多个元素

用作索引时,冒号运算符 (:) 可指代该维度中的所有元素。以下语法x = A(2,:)会创建一个包含 A 中第 2 行上所有元素的行向量

冒号运算符还可以引用某个值范围

以下语法会创建一个包含矩阵 A第 1 行、第 2 行和第 3 行所有元素的矩阵:x = A(1:3,:)


单个索引值可用于引用向量元素:x = v(3)会将v向量的第三个元素赋值给x(当 v 为行向量或列向量时)

如果对矩阵用 x = data(6)类似这样的操作时,会从上到下依次检索到元素(这里先从上到下数第6个)

单个索引值范围可用于引用向量元素的子集。例如

返回向量 v 的一个子集,其中包含从第三个到最后一个元素范围内的所有元素↓

x = v       (3:end) % 相当于List的切片
% MATLAB中,空格隔多少都没事↑

可以用一个(类似)列表(应该还是数组)将多个索引值一起提取:

索引可以是非连续数字。试着提取 density 的第一个、第三个和第六个元素。

x = density([1 3 6])

更改数组中的值

可以结合使用索引和赋值来修改变量的元素

例:A(2) = 11(将A中的第二个元素的值改为11)

同理矩阵也行

您可以结合使用索引与赋值,将数组值更改为与其他元素相等(相当于把后面的值赋给前面)

例如,以下代码将 x(1) 的值更改为 x(2) 的值:

x(1) = x(2)

甚至还可以对数组(或者矩阵)中的元素进行删除

可以采用类似于A(3) = []值赋为空『注意MATLAB中没有None所以这个位置的值会被直接删除』,例:

对向量执行数组运算

MATLAB 的设计让您能够自然地处理数组。例如,您可以将一个标量值与数组中的所有元素相加:y = x + 2


也可以将任意两个大小相同数组相加:z = x + y

也可以将数组中的所有元素与某个标量相乘或相除

相当于数组中每个元素都执行一遍相乘或相除


可以用max函数来确定一个向量(矩阵)的最大值


MATLAB 的函数可在单个命令中对整个向量或值数组执行数学运算,例:

这里的round()函数为取整

在MATLAB中,int()函数是求定积分

可以对每个元素进行相同操作


矩阵运算

* 运算符执行矩阵乘法(矩阵点乘)。因此,如果您使用 * 将两个大小相同的向量相乘,则由于内部维度不一致,您将会收到一条错误消息:

.* 运算符执行按元素乘法,允许您将两个大小相同的数组的对应元素相乘(元素间的点乘)『而*为矩阵乘法』:

z = [3 4] .* [10 20]
z = 
    30    80

还可以对其他具有兼容大小的数组执行运算。

例如,尝试执行以下按元素点乘语句:

x = [1 2;3 4;5 6; 7 8].*[1;2;3;4]

这个其实就是每一行都乘以第二个矩阵的对应行数索引的数字

字符和字符串

字符数组和字符串数组用于存储 MATLAB® 中的文本数据。

  • 字符数组是一个字符序列,就像数值数组是一个数字序列一样。它的一个典型用途是将短文本片段存储为字符向量,如 c = 'Hello World'
  • 字符串数组是文本片段的容器。字符串数组提供一组用于将文本处理为数据的函数。您可以使用双引号创建字符串,例如 str = "Greetings friend"。要将数据转换为字符串数组(字符串),请使用 string 函数。

要将字符串转换为字符数组:请用convertStringsToChars()函数

还可以直接用char()函数转换

字符数组可以当作序列进行索引,而字符串一整个就是一个索引:

字符数组相当于数组里面的数换成字符


char()函数

可以将字符数组转换为字符串,也可以将两个不同长度的字符整合成一个char数组(元素对不齐的地方用空格填充)

char数组中提取字符串的时候可以用deblank()函数自动删除char()函数自动添加的空格

eval()函数执行字符串

调用函数

size 函数可以应用于数组,以生成包含数组大小的单个输出变量(用于查看数组[矩阵]『矩阵返回俩值』大小)

s = size(x)

如果要是想让size()返回的俩值,可以放置俩参数并使用方括号 ([ ]) 获得多个输出『方括号[]绝对不能去掉』:

[xrow,xcol] = size(x)
xrow = 7
xcol = 8 % 7x8的一个矩阵

如果元素溢出了:[xrow,xcol,xx,xy] = size(x)

则前面的xrowxcol为相对应的值,x,y自动填充为1


可以使用 max 函数确定向量的最大值及其对应的索引值。max 函数的第一个输出为输入向量的最大值执行带两个输出的调用时第二个输出为索引值。(一个时仅执行一个)

[xMax,idx] = max(x)

如果元素过多会报错:


如果函数返回两个值,只需函数的第二个输出,可以使用波浪号字符 (~) 忽略特定输出

例如,您可能只需要包含向量中最大值的索引:

density = data(:,2)
[~,ivMax] = max(v2)
densityMax = density(ivMax)

不懂函数去官网看

或者也可以使用 doc 函数打开官方文档。

如使用如下代码打开 randi函数 的文档:

doc randi

绘制数据图

注:函数尾缀加个3就是三维图像函数了

可以使用 plot 函数在一张图上绘制两个相同长度的向量。

plot(x,y) % x轴,y轴

plot 函数还可以接受一个附加参数。使用该参数,您可以通过在引号中包含不同符号的方式来指定与之对应的颜色线型和标记样式

默认是蓝连续线条不标记

plot(x,y,"r--o")
% 一个-是实线,俩个-(--)是虚线

以上命令将会绘制一条红色 (r) 虚线 (--),并使用圆圈 (o) 作为标记。您可以在线条设定的文档中了解有关可用符号的详细信息。

一定要打引号""

plot(sample,mass2,"r*")
% 不使用线条可以把中间去了

请注意,每个绘图命令都创建了一个单独的绘图。要在一张图上先后绘制两条线(画俩条线),请使用 hold on 命令保留之前的绘图,然后添加另一条线

plot(sample,mass2,"r*")

hold on
plot(sample,mass1,"ks")

俩图重合了↑

启用保留状态(hold on)时,将继续在同一坐标区上绘图。要恢复默认绘图行为,即其中每个绘图都有自己的坐标区,请输入 hold off


如果输入的是向量(一阶数组),MATLAB 会使用向量值作为 y 轴数据,并将 x 轴数据的范围设置为从 1n向量中的元素数目):plot(v1)

这里无论是行向量还是列向量都是一样的

但如果输入的是矩阵

按列绘制出每列元素值(定y)相对其下标(定x)的曲线,曲线数等于x的列数

例:


plot 函数接受可选的附加输入,这些输入由一个属性名称一个关联的值(前面属性的值)组成:

plot(y,"LineWidth",5)

以上命令将绘制一条宽度为5的粗线。您可以在线条属性文档中了解更多可用属性的详细信息。

例:绘制 v1,线宽为 3


使用 plot 函数时,您可在绘图参数线条设定符之后添加属性名称-属性值对组

plot(x,y,"ro-","LineWidth",5)

以上命令将生成x,y的以红色,圆圈标记,宽度为5的图

例:绘制 v1y 轴)对 samplex 轴)的图,使用红色 (r) 圆圈 (o) 标记,线宽为 4

plot 函数用来绘制线条。MATLAB 中还有许多其他绘图函数。您可以在 MATLAB 图库中看到一个详尽的列表。

每个绘图都有其不同的自定义选项。

比如可以用histogram创建频数直方图

bar绘制柱状图(加个h反转)

fill填充图像


还可以用grid on 开启图像网格

放大图像指定区域

可以使用 xlim 函数放大所关注的区域。

xlim([xmin xmax])

例:

放大了范围为0-1000内的图像

三维图像的绘制

其他基本函数尾缀加个3即可画出三维图像

mesh(x,y,z)surf(x,y,z)函数能够绘制一个曲面网格图

编写绘图注释

可以使用绘图注释函数(例如 title)在绘图中添加标签。此类函数的输入一个字符串,呈现的是图的标题。MATLAB 中的字符串是用双引号 (") 引起来的,例:title("Plot Title")

title("Sample Mass")

ylabel()函数:在图像中添加y轴标签

xlabel()函数则是添加x轴标签

ylabel("Mass (g)")

在侧边栏写入y轴标签:

可以使用 legend 函数为绘图添加图例

您可以将字符串数组直接传递给 legend 函数。

例:

您可以在绘图注释中使用变量的值,方法是将字符串与变量串联起来:

bar(data(3,:)) % 创建一个柱状图
title("Sample " + sample(3) + " Data")

练习项目

MATLAB快速入门(17):电量项目_计算存储量

注意以a对b”意思等价于“用a表示b”,因此a作横坐标,为自变量,b作纵坐标,为因变量

MATLAB快速入门(18):项目 音频频率

导入数据

导入工具

如果在MATLAB中双击图像文件,它将以像素值数值数组的形式导入

如果在MATLAB中双击表格文件或者txt文件由于可以有多种方法存储数据,因此MATLAB会打开导入工具:

要导入的数据以蓝色突出显示

文本文档中的任何缺失数据以橙色突出显示且默认情况下将被替换为NaNNot a Number

默认情况下导入工具以表的形式导入此数据:
但还有其他选项

导入工具会自动给表中所有数据选取适当的数据类型

输出变量的默认名称来自文件名(第一行标题会被作为表变量名称)


如果导入了,则会在MATLAB工作区中创建变量:

以表的形式导入数据

提取表变量,可以使用圆点表示法

data.VariableName


如果您正在使用表,您可能希望将相关数据放在一起。您可以将计算结果赋给表,而不是创建单独的变量。

例:data.HeightMeters=data.HeightYards*0.9144

如果变量 data.HeightMeters 不存在,MATLAB 将在表中创建名为 HeightMeters 的新变量。

例:


改变表中的元素排列

注:它更新代码后会将你的动作指令默认输入到代码栏中

可用sortrows()函数进行排序


同时索引行数

圆点表示法用于提取表变量。要提取行,可以使用常规数组索引(注意,提取出来的还是)

例:

top3 = elements(1:3,:) 
% 提取了elements这个表的1到3行的所有数据

逻辑数组

关系判断

逻辑索引

关系运算符(例如 ><==~=)执行两个值之间的比较。相等不相等比较的结果为 1 (true) 或 0 (false)

输出会带个logical表示逻辑值『除0之外的所有逻辑值转换都为1(true)』

例:


您可以使用关系运算符将某个向量或矩阵单个标量值进行比较(就是每个元素去和这个值进行比较)。结果是与原始数组相同大小的逻辑数组(由10填充,条件为真就为1,假为0):

[5 10 15] > 12
ans = 
    0    0    1

也可以使用逻辑数组作为数组索引,在这种情况下,MATLAB 会提取索引(执行结果)为 true 的数组元素

以下示例将会提取 v1 中大于 6 的所有元素。

v = v1(v1 > 6)
v =
    6.6678
    9.0698

同样的,也可以对两个不同向量使用逻辑索引

返回执行为true所在位置对应的元素

v = sample(v1 > 6) % 这里v1>6的索引为2和6,所以这
v =				   % 样会提取到sample里的索引为2
    18			   % 和6的数字
    23


您可以使用逻辑索引在数组中重新赋值

例如,如果您要将数组 x 中等于 999 的所有值都替换为值 1,请使用以下语法:

x(x==999) = 1


还可以使用逻辑运算符 and (&) 以及 or (|) 来组合逻辑比较:

要查找小于 4 大于 2 的值,请使用 &

x = v1(v1<4 & v1>2)

要查找大于 6 小于 2 的值,请使用 |

x = v1(v1>6 | v1<2)

可以用find()函数来查找相应值(或者逻辑比较为true的值)对应的索引值(从上到下,从左到右,下面返回的是由索引值构成的矩阵)

例:

编程构造

可用if进行条件判断(条件框内true执行false跳过)[MATLAB中为elseif]

可用forwhile进行循环

这些语句后都得加end关键字

注:MATLAB中对元素计算.点运算,可以增强代码可读性,这时就不必要使用循环了

决策分支(条件判断)

if语句

仅当条件为 true 时,才执行 if 代码块的主体

记得最后要加end,还得缩进块

通常,您可能还希望在所设条件不成立时执行其他代码。为此,您可以使用 else 关键字,如下所示。

x = rand
if x > 0.5
    y = 3
else
    y = 4
end

elseif 关键字可在 if 后使用,以添加更多条件。您可以包括多个 elseif 代码块。

switch语句

语法:

switch switch_expression
   case case_expression
      statements
   case case_expression
      statements
    ...
   otherwise
      statements
end

其中switch_expression能是可计算式,但是不能是可输入的表达式,然后处理完结果后匹配下列case语句

而不用otherwise也行

例:

n = input("")
switch n
    case -1
        disp('negative one')
    case 0
        disp('zero')
    case 1
        disp('positive one')
    otherwise
        disp('other value')
end

n = 3

other value

进行多值判断(只能用花括号{})

例:

angel = input("")
switch angel
    case {0,360}
        disp('North')
    case {-180,180}
        disp('South')
    case {-270,90}
        disp('East')
    case {-90,270}
        disp("west")
    otherwise
        disp('other value')
end

0

North

  • switch_expression必须为标量字符向量(所以多值判断时不能使用[]『因为[]表示向量』而必须用{})

  • case_expression 不能包含关系运算符(例如 <>)来与 switch_expression 进行比较。要测试不相等性,请使用 if, elseif, else 语句

不像Python一样,不能够进行逻辑运算

  • MATLAB switch 语句不会像 C 语言的 switch 语句一样失效。如果第一个 case 语句为 true则 MATLAB 不会执行其他 case 语句
  • 例:
result = 52;

switch(result)
   case 52
      disp('result is 52')
   case {52, 78}
      disp('result is 52 or 78')
end

result is 52

不像C语言一样会执行到底

  • MATLAB break 语句会结束 forwhile 循环的执行,但不结束 switch 语句的执行。此行为不同于 C 语言中 breakswitch 的行为。

不能够像C语言一样用break终止

因为C语言目的就是为了不让它执行下列代码块,而用break跳出

循环语句

for循环

运行以下代码时,循环体将被执行三次,因为循环计数器 (c) 通过 1:3123)进行计数:

MATLAB中采用的是赋值=的形式

while循环

条件为 true 时重复执行的 while 循环

语法:

while expression
    statements
end

计算一个表达式,并在该表达式为 true 时在一个循环中重复执行一组语句。表达式的结果非空并且仅包含非零元素(逻辑值或实数值)时,该表达式为 true。否则,表达式为 false

break&continue

break

break 终止执行 forwhile 循环。不执行循环中在 break 语句之后显示的语句

在嵌套循环中,break 仅从它所发生的循环中退出。控制传递给该循环的 end 之后的语句。

跳出当前的大循环


continue

continue 将控制传递给 forwhile 循环的下一迭代。它跳过当前迭代的循环体中剩余的任何语句。程序继续从下一迭代执行。

continue 仅在调用它的循环的主体中起作用。在嵌套循环中,continue 仅跳过循环所发生的循环体内的剩余语句。

跳过本次循环,执行下一次循环

自定函数

声明函数用关键字function

输入&输出

输入

input

x = input(prompt) 显示 prompt 中的文本并等待用户输入值后按 Return 键。用户可以输入 pi/4rand(3) 之类的表达式[表达式会自动进行计算],并可以使用工作区中的变量:

prompt = "What is the original value? ";
x = input(prompt)
y = x*10

在提示下,输入 magic(3)

x =
     8     1     6
     3     5     7
     4     9     2

y =
    80    10    60
    30    50    70
    40    90    20

prompt — 向用户显示的文本

显示给用户的文本,指定为字符串或字符向量。

要创建跨越多行的提示,请使用 \n 指示每个新行。要在提示中包含反斜杠 (\),请使用 \\

『可以在想换行的字符串后面加个\n即可换行显示』

menu

语法:

choice = menu(message,options)
choice = menu(message,opt1,...,optn)
% 返回值赋给choice了

choice = menu(message,options) 显示一个模态多选择项对话框,其中包含 message 中的文本。options 中的每个元素都显示为一个按钮。该函数返回所选按钮的索引,如果用户点击窗口上的关闭按钮,则返回 0

可包含多个options

还可以以数组[]的形式存储数据

➤注意:不推荐使用menu,可用listdlg替代

输出

disp

显示值,显示矩阵向量等

还能够通过包含 HTML 超链接代码作为 disp 的输入来显示网页链接,例如:显示指向 MathWorks® 网站的链接

X = '<a href = "https://www.mathworks.com">MathWorks Web Site</a>';
disp(X)

还能够计算处理表达式

sprintf 能够创建文本,但还需要用disp显示

name = 'Alice';   
age = 12;
X = sprintf('%s will be %d this year.',name,age);
disp(X)

Alice will be 12 this year.

还是相当于C语言的输入数据格式

%d整型,%s字符型

fprintf则可以直接显示文本,无需创建变量[上述的升级版]不过,要确保正常终止显示,必须在文本末尾处添加换行 (\n) 元字

fprintf

将数据写入文本,例:

A = 100
C = 10000 - 7
fprintf("%d等于多少?%d",C,A)

9993等于多少?100

format

设置输出显示格式

语法format(style)

可以自由调整显示数据的表示格式(一般放输出语句的开头)

综合项目练习

项目-恒星运动

MATLAB中可以使用滑块来控制变量,实现可视动态变化:

项目-行星运动II

您可以将字符串数组直接传递给 legend 函数。

MATLAB 入门之旅摘要

基本语法

示例 说明
x = pi 使用等号 (=) 创建变量。 左侧 (x) 是变量的名称,其值为右侧 (pi) 的值。
y = sin(-5) 您可以使用括号提供函数的输入。

桌面管理

函数 示例 说明
save save data.mat 将当前工作区保存到 MAT 文件中。
load load data.mat 将 MAT 文件中的变量加载到工作区。
clear clear 清除工作区中的所有变量。
clc clc 清除命令行窗口中的所有文本。
format format long 更改数值输出的显示方式。

数组类型

示例 说明
4 标量
[3 5] 行向量
[1;3] 列向量
[3 4 5;6 7 8] 矩阵

等间距向量

示例 说明
1:4 使用冒号 (:) 运算符,创建一个从 14,间距为 1 的向量。
1:0.5:4 创建一个从 14,间距为 0.5 的向量。
linspace(1,10,5) 创建一个包含 5 个元素的向量。这些值从 110 均匀间隔。

创建矩阵

示例 说明
rand(2) 创建一个 22 列的方阵。
zeros(2,3) 创建一个 23 列的矩形矩阵。

索引

示例 说明
A(end,2) 访问最后一行的第二列中的元素。
A(2,:) 访问第二行所有元素。
A(1:3,:) 访问前三行的所有列。
A(2) = 11 将数组中第二个元素的值更改为 11

数组运算

示例 说明
[1 1; 1 1]*[2 2;2 2] ans = 4 4 4 4 执行矩阵乘法
[1 1; 1 1].*[2 2;2 2] ans = 2 2 2 2 执行按元素乘法

多个输出

示例 说明
[xrow,xcol] = size(x) x 中的行数和列数保存为两个不同变量。
[xMax,idx] = max(x) 计算 x 的最大值及其对应的索引值。

文档

示例 说明
doc randi 打开 randi 函数的文档页。

绘图

示例 说明
plot(x,y,"ro-","LineWidth",5) 绘制一条红色 (r) 虚线 (--) 并使用圆圈 (o) 标记,线宽很大。
hold on 在现有绘图中新增一行。
hold off 为下一个绘图线条创建一个新坐标区。
title("My Title") 为绘图添加标签。

使用表

示例 说明
data.HeightYards 从表 data 中提取变量 HeightYards
data.HeightMeters = data.HeightYards*0.9144 从现有数据中派生一个表变量。

逻辑运算

示例 说明
[5 10 15] > 12 将向量与值 12 进行比较。
v1(v1 > 6) 提取 v1 中大于 6 的所有元素。
x(x==999) = 1 用值 1 替换 x 中等于 999 的所有值。

编程

示例 说明
if x > 0.5 y = 3 else y = 4 end 如果 x 大于 0.5,则将 y 的值设置为 3。 否则,将 y 的值设置为 4
for c = 1:3 disp(c) end 循环计数器 (c) 遍历 值 1:3123)。 循环体显示 c 的每个值。

标签:函数,元素,矩阵,MATLAB,数组,向量
From: https://www.cnblogs.com/Lyanv/p/18104579

相关文章

  • matlab实现神经网络
    一、原理人工神经网络是具有适应性的简单神经元组成的广泛并互连的网络,它的组织能够模拟生物神经系统对真实世界物体作出的交互式反应。人工神经网络具有自学习、自组织、较好的容错性和优良的非线性逼近能力将神经网络的学习能力引入到模糊系统中,将模糊系统的模糊化处理、模......
  • m基于yolov2网络的火焰烟雾检测系统matlab仿真,包含GUI界面
    1.算法仿真效果matlab2022a仿真结果如下:  2.算法涉及理论知识概要        YOLOv2是一个实时目标检测系统,由JosephRedmon和AliFarhadi在2016年提出。它通过单个神经网络对输入图像进行一次前向传播就能预测出图像中的多个目标及其位置。在火焰烟雾......
  • MATLAB的一些基本知识
    1.矩阵%矩阵A=[123;456;789]B=A'%行变列,列变行C=A(:)%以先列后行的顺序打印为一列D=inv(A)%求逆A*DE=zeros(10,5,3)%打印三个10行5列的矩阵E(:,:,1)=rand(10,5)%打印随机数E(:,:,2)=randi(5,10,5)%打印最大为5的随机数E(:,:,3)=randn(10,5)%打印均值......
  • 【无人机路径规划】基于深度强化学习的多无人机辅助边缘计算网络路径规划(Matlab代码实
    ......
  • 【matlab】【2024年】【优化算法】【黑风筝算法】【BKA】【附带论文中英翻译网页版】
            本文创新性地提出了黑风筝算法(BKA),这是一种受黑风筝迁徙和掠食行为启发的元启发式优化算法。BKA集成了柯西突变策略和Leader策略,增强了算法的全局搜索能力和收敛速度。这种新颖的组合在探索全球解决方案和利用本地信息之间取得了良好的平衡。在CEC-2022和CEC-20......
  • matlab简单信号处理方法整理
     机器学习与数据预测——信号处理MachineLearningandDataPrediction--SignalProcessingContents1.泰勒级数应用Taylorseriesapplication1.1.diff,int,cumsum函数用法1.2.对带有边界的函数求其泰勒展开式2.傅里叶级数与傅里叶变换FourierseriesandFouriertrans......
  • 010_documentation_in_Matlab中的帮助与文档
    Matlab中的帮助与文档1.前言一眨眼已经写了十篇文章。000在Matlab中使用Python包CoolProp001Matlab运行时间测试与时间复杂度分析002避免使用for循环003Matlab中的向量约定004Matlab中的矩阵约定005Matlab中的数组索引006Matlab中的逻辑数组索引007Matlab学习的启动与加......
  • 恒温恒湿空气调节系统设计:基于MATLAB的恒温恒湿空气调节系统建模和仿真,包括空气调节系
    鱼弦:公众号【红尘灯塔】,CSDN内容合伙人、CSDN新星导师、全栈领域优质创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)基于MATLAB的恒温恒湿空气调节系统设计:原理、应用、实现与分析1.恒温恒湿空气......
  • DBO优化GRNN回归预测(matlab代码)
    DBO-GRNN回归预测matlab代码蜣螂优化算法(DungBeetleOptimizer,DBO)是一种新型的群智能优化算法,在2022年底提出,主要是受蜣螂的的滚球、跳舞、觅食、偷窃和繁殖行为的启发。数据为Excel股票预测数据。数据集划分为训练集、验证集、测试集,比例为8:1:1模块化结构:代码按照功......
  • 数学建模之MATLAB使用
    1.数值计算和符号计算的认识我们都知道MATLAB里面存在着数值计算和符号计算,但是两者之间到底是怎样的呢?举一个很简单的例子,我们在高等数学里面的微积分学习时经常求不定积分,也就是原函数,这个过程实际上进行的就是符号运算,我们通过对一些变量字符x等等的运算,最后得出一个表达......