MATLAB 使用

MATLAB CLI

启动 MATLAB 命令行交互界面(需要已安装 MATLAB):

matlab -nodesktop -nosplash  # nodesktop 无桌面环境,nosplash 无启动动画

使用 MATLAB 执行脚本文件:

matlab -batch "main"  # 运行 main.m

⚠️ 注意:MATLAB 在执行完脚本文件后会自动退出。如果你希望在执行结束时暂停,需要在脚本文件末尾添加 pause;。这样只有当用户按下回车时程序才会退出。

GNU Octave 是 MATLAB 的开源替代品,提供了与 MATLAB 高度兼容的语法和功能,使用户能够在不购买 MATLAB 许可证的情况下进行类似的科学和工程计算。

基本操作

  • ; - 禁止显示网版印刷
  • ls - 列出当前目录中的所有文件
  • cd - 改变当前目录
  • pwd - 显示当前目录
  • type - 显示文件内容
  • clc - 清空命令行窗口
  • mkdir - 新建文件夹
  • rmdir - 删除文件夹
  • delete - 删除一个文件
  • what - 列出当前目录中的 MATLAB 文件
  • who - 查看当前 Workspace 变量名
  • movefile - 文件移动/重命名
  • copyfile - 文件复制
  • edit - 编辑/创建文件
  • help - 显示帮助内容

可以像使用 Shell 命令一样使用,也可以像使用 MATLAB 函数一样使用。

安装工具包

参考:获取和管理附加功能 | MathWorks

帮助程序

help <function | namespace> % 查看函数/命名空间的命令行帮助页
doc <function | namespace>  % 查看函数/命名空间的 HTML 帮助页

数学运算

%{
  块注释
%}

% 数组下标运算符
arr(i)  % i 从 1 开始

% 标量运算
a = 2;
b = a * 3;  % b = 6

% 矩阵运算
x = [1 2 3; 4 5 6; 7 8 9]
y = x * 2;  % y = [2 4 6; 8 10 12; 14 16 18]
z = x'      % z = [1 4 7; 2 5 8; 3 6 9],z 是 x 的转置

% 数组乘法
x = [1 2 3];
y = [4 5 6];
z = x.* y;  % z = [4 10 18]

% 生成行向量
z = [3:6]     % z = [3 4 5 6]
z = [0:1:5];  % z = [0 1 2 3 4 5]

% 使用冒号运算符
z(1:3)       % z 向量的第 1 到第 3 个元素
x(1:2, 2:3)  % x 矩阵的 1 到 2 行的 2 到 3 列的元素
x(i, :)      % x 的第 i 行
x(:, j)      % x 的第 j 列
x(1:2, :)    % x 的 1 到 2 行
x([1 1], :)  % 两个 x 的第一行

输入输出

输入:

integer = input("Please input an integer: ");
string = input("Please input a string: ", "s");

"str" 表示字符串,'char' 表示字符数组。

输出:

fprintf('The integer is %d\n', integer);
fprintf('The string is %s\n', string);
disp('Any word');

disp(integer);
disp(string);

循环

for 循环

for i = 1 : 10
    disp(i);
end

while 循环

i = 1;
while i <= 10
    disp(i);
    i = i + 1;
end

m 文件

m 文件可以是脚本文件,也可以是函数文件。调用时使用文件名(不带后缀)。

运行 m 文件:

hello_matlab # 运行 hello_matlab.m 文件

脚本文件

不接受输入,不产生输出。

% 代码

函数文件

function [out1, out2, out2] = func_name(in1, in2, in3)

% function comment
% 代码

绘图

平面直角坐标图

绘制 \(\sin(x)\) 函数:

x = [0 : 0.01: 10];
y = sin(x);

plot(x, y);

image

绘制 \(\sin(x)\)\(\cos(x)\) 函数:

x = [0 : 0.01: 10];
y = sin(x);
z = cos(x);

% 在一幅图像中绘制两个图形,图形 1 为红色,图形 2 为蓝色,图例名称分别为 'sin(x)' 和 'cos(x)'
plot(x, y, 'r', x, z, 'b'), legend('sin(x)', 'cos(x)');

image

figure("Name", "Subplot Example", "NumberTitle", "off")  % 改变图像窗口的标题

subplot(3,1,1);    % 将即将绘制的图形以多个子图的方式绘制,前两个参数指定子图网格的行数和列数,第三个参数指定即将绘制的子图在网格中的位置
x = [0:0.01:3];
y = exp(-1.5*x).*sin(10*x);
plot(x,y);         % plot 绘制平面直角坐标图
xlabel('x');
ylabel('y');
title("y = exp(1.5x) * sin(10x)"); % 子图标题
axis([0 3 -1 1]);  % 设置横、纵轴坐标范围

subplot(3,1,2);
x = 0:10;
y = [0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0];
stairs(x,y);       % stairs 绘制阶梯图形(如波形图)
xlabel('x');
ylabel('y');
title("Stairs");
axis([0 10 -0.5 5.5]);
grid;              % 显示网格线

subplot(3,1,3);
x = [0:0.1:3];
y = exp(-1.5*x).*sin(10*x);
stem(x,y);         % stem 绘制针状图
xlabel('x');
ylabel('y');
title("Sampling");
axis([0 3 -1 1]);

image

参见:

posted @ 2024-06-09 16:23  Undefined443  阅读(11)  评论(0编辑  收藏  举报