Matlab使用基础

基本命令

clear all %清除Workspace中的所有变量
clc %清除Command Window中的所有命令
%和%%是注释
whos%显示当前内存中的变量信息

基础函数

abs()%取绝对值
char(65)%将ASCII码数值变成字符
num2str(65)%将里面的内容变成字符串
length()%字符串长度,不把'/0'的长度计算进去
path()%将路径添加到搜索路径表的最后

矩阵

A[1 2 3;4 5 2;3 2 7]%创建矩阵
A'%矩阵转置
A(:)%展开矩阵成一列
inv(A)%方阵求逆,矩阵和自己的逆矩阵相乘等于单位矩阵
E=zeros(10,5,3)%创建10行5列3层的三维矩阵

注意:MATLAB的索引值不从0开始,从1开始!!!!!

E(:,:,1)=rand(10,5)%创建一个10行5列的矩阵,其中的元素是从0到1之间的随机数
,给到E矩阵的第1层
E(:,:,2)=randi(5,10,5)%创建一个10行5列的矩阵,其中的元素是最大为5的正整数的随机数,给到E矩阵的第2层
E(:,:,2)=randi([2,5],10,5)%创建一个10行5列的矩阵,其中的元素是最大为5最小为1的整数的随机数,给到E矩阵的第2层
E(:,:,3)=randn(10,5)%创建一个10行5列的矩阵,其中的元素是标准正态分布中生成的随机数,给到E矩阵的第3层
eye(3)%创建一个3x3的单位矩阵,即主对角线上的元素为1,其它位置的元素为0
magic(5)%生成一个5x5的幻方/魔方矩阵。幻方矩阵是指在每行、每列以及主对角线的元素和均相等的方阵。
B=1:2:9 %创建一个向量B,其中的元素从1开始,以步长2递增,直到不超过9,最后不一定要出现9
repmat(B,3,2)%创建一个新的矩阵,将矩阵B纵向复制3次,横向复制2次
ones(2,4)%创建一个2行4列元素全是1的矩阵

A+B%加
A-B%减
A*B%乘
A.*B%点乘
A/B%除
A./B%点除

A(2,3)%2行3列元素
A(3, :)%3行一整行,:代表全部
A(:, 4)%4列全部
[m,n]=find(A > 20)%找到矩阵A中大于20的元素的行列索引,返回行索引和列索引的向量m和n

元胞

A=cell(3,4)%创建一个大小为3x4的空元胞数组
A{2}=eye(3)%创建一个3x3的单位矩阵,放在元胞索引为2的位置
B=A{5}取出元胞位置为5的对象给到B

结构体

books=struct('name',{
  {'Machine Learning','Data Mining'}},'price',[30 40])
%name: {'Machine Learning'  'Data Mining'}
%price: [30 40]

books.name
% 1×2元胞数组
%{'Machine Learning'}    {'Data Mining'}

books.name(1)
%取出索引1里面的元胞,可以理解为一个指针
% 1×1元胞数组
%{'Machine Learning'}

books.name{1}
%取出索引1里面的元胞的内容,可以理解为实际值
% 1×1元胞数组
%'Machine Learning'

流程控制

if ... else ... end
for ... end
while ... end
switch ... case ... end

绘制二维图像

基础例子

x = 0:0.01:2*pi;%创建向量x
y = sin(x);%创建一一对应的向量y
figure%建立一个幕布
plot(x, y)%画出xy线条
title('y = sin(x)')%增加标题
xlabel('x')% x轴标签
ylabel('sin(x)') % y轴标签
xlim([0 2*pi])%x轴坐标限制
legend('y = sin(x)') % 添加图例

进阶例子

x = 0:0.01:20;
y1 = 200 * exp(-0.05 * x) .* sin(x);
y2 = 0.8 * exp(-0.5 * x) .* sin(10 * x);
figure

[AX,H1,H2] = plotyy(x, y1, x, y2,'plot');
%创建一个具有多个y轴的图
%返回三个句柄:图形对象、第一个数据集的线条对象、第二个数据集的线条对象

set(get(AX(1),'ylabel'),'String','Slow Decay')
%get(AX(1),'ylabel')用于获取第一个y轴的句柄
%然后set函数用于设置该句柄所代表的对象的属性,设置第一个y轴的标签为"Slow Decay"

set(get(AX(2),'ylabel'),'String','Fast Decay')
xlabel('Time (\mu sec)')
title('Multiple Decay Rates')
set(H1,'LineStyle','--')
set(H2,'LineStyle',':')

绘制三维图像

t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
grid on%打开网格
axis square%将绘图区域设置为一个正方形

图形窗口分割

x=linspace(0,2*pi,60);%在区间[0,2π]中生成包含60个等间距点的向量

subplot(2,2,1)%设置当前图形为一个2x2的网格,并将绘图焦点设置在第1个子图上
plot(x,sin(x)-1);
title('sin(x)-1');
axis([0,2*pi,-2,0]);%axis设置x和y轴的可视范围,x 轴0到2π,y轴-2 到0

subplot(2,1,2)
plot(x,cos(x)+1);
title('cos(x)+1');
axis([0,2*pi,0,2]);

subplot(4,4,3)
plot(x, tan(x));
title('tan(x)');
axis([0,2*pi,-40,40]);

subplot(4,4,8)%这回不按照顺序排下去了,就会跳开几个位置
plot(x,cot(x));
title('cot(x)');
axis([0,2*pi,-35,35]);

hold on/off

hold on 命令用于将绘图模式设置为保持当前图形,并在其上绘制新的图形,而不清除现有的图形。这样,你可以在同一张图上绘制多个曲线或图形,而不会清除先前的内容。

hold off 命令用于关闭绘图保持功能,这将导致在下一次绘图时清除现有的图形。当不再需要在同一张图上绘制新的内容时,使用 hold off 可以恢复正常的绘图模式。

因为一般是默认hold on的,所以直接执行hold on不会有什么明显的现象。

x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
plot(x, y1)
hold off %hold on
plot(x, y2)
xlabel('x')
ylabel('y')
title('Sin(x) and Cos(x)')
legend('sin(x)', 'cos(x)')

图形的保存与导出

(1) 编辑 -> 复制图形
(2) 文件 -> 另存为
(3) 查看 -> 属性编辑器
(4) 调整图片质量:文件 -> 导出设置 -> 大小 设定高度宽度,这时候导出的图形会更加清晰

调用函数

新建一个函数文件funsin.m和一个脚本文件callsin.m,用脚本文件来调用函数文件。

函数文件内容

function f = funsin(var) %定义funsin函数,入参var,输出是变量f。函数的名称必须与文件名相同,并且函数定义必须位于文件的开头
f = sin(var) %将数值给到输出变量f
end

脚本文件内容

type funsin.m%/在命令窗口中显示函数文件的内容
x=[0 pi/2 pi 3*pi/2 2*pi]
sinx=funsin(x)%调用函数

补充内容

搜索路径

当MATLAB 对函数或文件等进行搜索时,都是在其搜索路径下进行的。如果调用的函数在搜索路径之外,那么 MATLAB 会认为该函数不存在。

相关推荐

  1. 使用MATLAB进行ARIMA模型预测的基本示例

    2023-12-08 09:28:04       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-08 09:28:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-08 09:28:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-08 09:28:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-08 09:28:04       18 阅读

热门阅读

  1. LeetCode 1745.分割回文串IV(动态规划)

    2023-12-08 09:28:04       30 阅读
  2. vue项目中如何引入zip压缩包之解决方案

    2023-12-08 09:28:04       42 阅读
  3. Installing GDS

    2023-12-08 09:28:04       40 阅读
  4. 【1day】金和OA某接口存在未授权访问漏洞

    2023-12-08 09:28:04       31 阅读
  5. ARM虚拟化与车联网安全应用

    2023-12-08 09:28:04       39 阅读