以下内容为个人笔记,部分图片来源于郭老师课件或课程截图。 笔记汇总:MATLAB基础教程 课程视频:MATLAB基础教程-台大郭彦甫(14课全-高清-含课件)
脚本编写¶
%%将整个脚本文件分为若干“节”,可以选择“运行当前节”来执行某部分代码,方便debug:

也可以添加断点debug,此时鼠标悬停于变量上可以查看该变量详细信息:
结构化程序设计¶
逻辑运算符¶
matlab中的不等于:~=
其他均与c一致:
控制语句¶
注意matlab中if-else、for、while、switch...均需要以end结尾

- matlab中
switch语句与c不一样,不需要 break 跳出,不会逐一执行每一条。 - otherwise :相当于
defult break语句会结束for或while循环的执行,但不结束switch语句的执行。
为变量预分配空间¶
如果未预分配空间(如前面script中第一节),matlab会在每次迭代时调整其大小,会比较费时间:

tic-toc可以用于计时。
Script 小技巧¶
+ 在脚本开头,使用下列 command:
clear all :删除以前的变量
close all :关闭所有的图形
+ 使用省略号使脚本更具可读性(添加...来换行)
+ 按Ctrl+C提前结束运行
自定义函数¶
function 编写¶
像这样定义一个 无参、无返回值 的函数:

- 函数以关键字
function开始,以end结尾; - 函数一般保存为单独文件,函数名 必须和 文件名一致;
函数文件与脚本文件都为
.m文件; - 也可将临时使用的函数定义在脚本文件内,但需要定义在文件最后;
- 输入函数
input(); 输出可以用disp()或者fprintf()——与c语言的printf使用基本一致,但需要注意 matlab 中对于字符串均使用''而不是"",fprintf()中的内容使用''括起来;
像这样定义一个 多参、多返回值 的函数(多输入输出):

- 注意在函数体中并不需要明示
return,只需要在返回列表中写出对应的变量名就行,matlab会帮你做好一切; - 要在调用函数时接收返回值,使用类似
[Acc Force]这样的变量矩阵来接收,函数将分别返回对应的值;使用[~, Force]来接收部分返回值;
Function Handles¶

一种创建匿名函数的方法,即不必在 .m 文件中定义的单行表达式函数。
function handles 其实是一个 pointer,它使 f 指向函数 exp(-2*x) ;f 的输入在 @(x) 处,此处的 x 则将成为函数 exp 的输入参数。
练习¶
sum = 0; % 设置初始值为0
i=1;
while i <= 999
sum = sum + i;
i = i+1;
end
fprintf('和为:%d\n', sum);

%% 方法一:普通的遍历
A = [0 -1 4
9 -14 25
-34 49 64]
B = zeros(size(A)); %生成一个和A同样大小的全零矩阵
for i=1:size(A, 1) %遍历数组A
for j=1:size(A, 2)
if(A(i,j) < 0)
B(i,j)=1; % 下标置为1表示数组A对应的元素为负
A(i,j)=0; % 负的项置为0
end
end
end
%% 方法二:矩阵思想
A = [0 -1 4
9 -14 25
-34 49 64]
B = A < 0 %返回一个零一矩阵,数组A中元素小于0的对应位置为1
A(B) = 0 %将数组B指定位置值置为0
请务必好好思考方法二,并运行一遍看看结果。 MATLAB 的全称是 Matrix Laboratory(矩阵实验室),以矩阵的思维来利用matlab往往能事半功倍!

% 以下所有内容可以保存在一个脚本文件中
% 或者也可以将函数单独保存在 F2C.m 文件中
F = input('请输入华氏温度:');
while(F) % 检查是否有输入
fprintf('摄氏温度为:%f\n', F2C(F));
F = input('请继续输入华氏温度:(输入空行结束)');
end
function C = F2C(F)
C = (F-32).*5./9;
end