Version: Next
结构化程序与自定义函数
- 脚本编写
- 分支编程
- 自定义函数
Matlab 脚本
.m
格式文件不需要
编译
左上角
new script
,新建脚本
for i = 1 : 10
x = linspace(0, 10, 101);
plot(x, sin(x + i));
print(gcf, '-deps', strcat('plot', num2str(i), '.ps'));
end
- 点
run
执行
单行注释符
%
%%
标记一个区块
section
,可以使用run section
只执行指定section
而不是所有程序debug:在数字位置点一下,就可以打
断点
ctrl + i
为自动格式化代码
分支与条件控制语句
if,elseif,else
for
switch, case, otherwise
try catch
while
break
continue
end
pause —— 暂时退出执行
return
逻辑表达式
==
<
<=
~=
不等于
&&
与
||
或
if
if 条件1
表达式1
elseif 条件2
表达式2
else
表达式3
end
判断奇偶数
>> a = 3;if rem(a, 2) == 0 % 对 2 取余disp('a is even')elsedisp('a is odd')enda is odd>>
while
while 条件
表达式
end
1 2 3 ... n 连乘的积 < 10的100次方,求n
n = 1;
while prod(1 : n) < 1e100
n = n + 1;
end
练习1
使用 while 循环计算 1 + 2 + ... + 999 的和
sum = 0;i = 1;while i < 1000sum = sum + i;i = i + 1;enddisp(sum)
for 循环
for 变量=初始值:增量:end
表达式
end
for n = 1 : 10
a(n) = 2 ^ n
end
disp(a)
警告
matlab 中变量的值有时不会被新值替代掉,最好用 clear 变量名
手动释放旧值
练习2
用 for 循环输出 a = [2 2^3 2^5 2^7 2^9]
提示代码
for n = 1 : 10a(n) = 2 ^ n;enddisp(a)该代码的问题是,能够生成需要的那几个数,但是下标多了,空出来的那些下标位置上的值为 0
i = 1for n = 1 : 2: 10a(i) = 2 ^ ni = i + 1enddisp(a)
tic toc
可以对之间的指令 计时
练习3
- 把矩阵 A 复制到 矩阵 B
- 在 B 中,将所有负数元素变为正数
A = [0 -1 4; 9 -14 25; -34 49 64]B = zeros(3, 3);for i = 1 : numel(A)if A(i) < 0B(i) = -A(i);elseB(i) = A(i);endenddisp(B)