欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > matlab初学习记录

matlab初学习记录

2024/11/30 4:05:52 来源:https://blog.csdn.net/soleiltree/article/details/142680453  浏览:    关键词:matlab初学习记录

文章目录

    • 内置函数与变量
    • matlab 编辑器
    • 数组
    • 等间距向量
    • 数组函数
    • 数组索引
      • 提取多个元素
    • 对向量执行数组计算
    • 查看文档
  • 画图
    • 添加注释
  • 实践
  • 导入数据
  • 关系运算符
  • 分支
  • 恒星运动

matlab 学习看入门之旅

先计算等号右边再计算等号左边。

工作区记录等号右边的变量。

; 表示的是抑制输出。不输出结果,但是工作区还是会记录的。

上下箭头能够返回之前的命令。

Snipaste_2024-07-26_15-06-10.png

Snipaste_2024-07-26_15-07-43.png

并没有重新计算。

Snipaste_2024-07-26_15-08-16.png

matlab 区分大小写,数字不能开头当变量。

save + 文件名字,可以将工作区的变量保存到 mat 文件中

如:save datafile 就是将工作区里的变量保存到 datafile.mat 文件中

clear 将工作区清空

load + 文件名字,能将文件中的变量加载到工作区中

输入变量名称能在控制台输出变量里面的内容。

clc 清空命令行窗口

Snipaste_2024-07-26_15-15-04.png

也能够保存或加载部分变量。

内置函数与变量

matlab 里面有些内置的量。

如 pi,sin,abs,eig,等等

matlab 中有虚数。

使用 format 函数控制显示精度。

Snipaste_2024-07-26_15-19-04.png

matlab 编辑器

.mlx

仅运行节,就只有节内的值会改变。

运行就是全部了。

数组

matlab 中的变量均为数组。

空格也行,也能区分。不一定非要用逗号隔开。

分号区分一行。

数组内部也可以使用函数进行计算。

等间距向量

使用冒号运算符

1:4 就是 1,2,3,4,

x=1:0.5:5 就是从 1 开始到 5 结束,每个数间隔 0.5,这个是用于知道向量的间隔时使用的。

知道元素数目是使用 linspace(_first_,_last_,_number_of_elements_) 该函数。

x = x' 能让变量转置。

可以通过创建行向量再进行转置来建立列向量。使用圆括号来指定运算的顺序。

请注意,如果您使用 linspace: 创建向量,则不需要使用方括号 ([])。

数组函数

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

请注意,rand(2) 命令中的 2 指定输出将为一个 2×2 的随机数矩阵。数的取值是 0 到 1

rand (x, y) 生成 x 行,y 列的数组。

zeros (x, y) 生成 x 行,y 列全零矩阵。

size (x) 能够得到 x 变量代表的矩阵的大小。

数组索引

变量名(x, y)就是从该变量代表的数组中取第 x 行第 y 列的值。注意从 1 开始索引。

: 冒号表示整个,如 A(x,:)表示第 x 行的全部值。

end 表示最后,可以放到 x 表示最后一行,也可以放到 y 表示最后一列。也可以用来计算,例如 end-1 表示倒数第二行。

可以使用变量来作为索引。

提取多个元素

冒号前面的数得小于后面的数

对于行向量或者是列向量可以给一个值,就相当于数组取数,不过索引还是从 1 开始的。

Snipaste_2024-07-26_16-07-51.png

Snipaste_2024-07-26_16-10-52.png

Snipaste_2024-07-26_16-10-57.png

对向量执行数组计算

r = v 1 + 1 就是对 v 1 中的每个元素都加了个 1

* 乘法,这是矩阵乘法,

.* 元素乘法, 对应行,对应列的元素相乘。只有一列的话就是列乘列的。

\ 除法

max()函数能确定向量的最大值。

函数是可以对整个数组中的所有值都生效的。

size() 有两个输出,x, y。

例如 [dr,dc] = size(data)

使用 max 也是一样的,只不过返回的是最大值的索引。

[vMax,ivMax] = max(v2)

波浪号字符 (~) 忽略特定输出。

查看文档

Documentation - MATLAB & Simulink - MathWorks 中国

doc 函数可以直接打开文档。

Snipaste_2024-07-26_16-36-36.png

画图

使用 plot 函数画图

plot(x,y,“r–o”)

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

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

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

当您单独绘制一个向量时,MATLAB 会使用向量值作为 y 轴数据,并将 x 轴数据的范围设置为从 1n(向量中的元素数目)。

plot 函数接受可选的附加输入,这些输入由一个属性名称和一个关联的值组成。

plot(y,“LineWidth”,5) 后面的数字是线的宽度。

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

MATLAB Plot Gallery - MATLAB & Simulink (mathworks.cn)

添加注释

title(“Plot Title”) 添加标题。

ylabel(“Mass (g)”) 坐标轴的说明。

legend(“Exp A”,“Exp B”) 就是左上角的东西

Snipaste_2024-07-26_17-15-42.png

Snipaste_2024-07-26_17-15-45.png

可以拼接字符串。

Snipaste_2024-07-26_17-17-23.png

Snipaste_2024-07-26_17-17-27.png

实践

usage 有什么用?

size 返回的是两个值。

Snipaste_2024-07-26_19-15-14.png

我这里只用一个值去接 size 返回的值,爆出来上面的错误。

可以使用 fft 函数来计算向量的离散傅里叶变换。

fft(y)

f 将包含从 0fs 的频率。主频位于 f 的开头位置。您可以使用 xlim 函数放大所关注的区域。

xlim () 里面放个数组,(min,max)当然数组使用方括号包裹的。

这个限制的是 x 轴的范围。

Snipaste_2024-07-26_19-24-57.png

Snipaste_2024-07-26_19-24-59.png

将鼠标移到图上是有工具显示的。

Snipaste_2024-07-26_19-28-28.png

Snipaste_2024-07-26_19-29-09.png

可以点击更新代码。

Snipaste_2024-07-26_19-29-14.png

导入数据

一个表有列有行,列有列名,我们可以通过表名. 列名获得一列的数据。

我们也可以点一个不存在的列命,这就是创建了一列。

关系运算符

相等或不相等比较的结果为 1 (true) 或 0 (false)。返回的是数值。

可以使用关系运算符将某个向量或矩阵与单个标量值进行比较。结果是与原始数组相同大小的逻辑数组。

可以使用逻辑数组作为数组索引,在这种情况下,MATLAB 会提取索引为 true 的数组元素。

创建一个名为 `v` 的变量,其中包含 `v1` 中所有小于 4 的元素。
v = v1(v1 < 4)

还有别的符号

Snipaste_2024-07-26_19-42-33.png

sampleres = sample(sample < 20 & sample > 10)

Snipaste_2024-07-26_19-44-21.png

分支

跟 python 一样。

不过 if 后面要匹配个 end

for 循环跟 foreach 一样。

最后也是要匹配个 end

如果您要对未知长度的向量执行循环,可以改用 length 函数。

恒星运动

min 函数可以带有两个输出,其中第二个输出为最小值的索引。

控件里面可以添加一些小工具。

loglog 跟 plot 差不多

https://lcms-files.mathworks.com/content/file/58a713b5-fa72-4ba7-8cba-7eb17bb7a331/addcontrol.gif?versionId=KtQYyLWOVTryBMRgPTDltGyd4z7daawj

legend(starnames)

legend 可以写一个数组的。

Snipaste_2024-07-26_20-30-31.png

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com