第二章基本原理
2.10.3流控制
流控制语句:
1.if
if expression1
statements1
elseif expression2
statements2
else
statements3
end
2.for
for index1 = start1:increment1:end
statements1
for index2 = start2:increment2:end
statement2
end
additional loop1 statements
end
3.while
while expressiona1
statements1
while expression2
statement
end
additional loop1
end
%语句是否0,控制循环是否继续
4.break
break会终止for或while循环的执行,跳出循环,进行循环外的下一条语句。仅跳出所含的那层循环。
5.continue
跳过本次循环的其他任何语句,进行下一次迭代。
6.switch
switch expression
case case_express
statement
case
statement
otherwise
end
代码优化
MATLAB专为数组运算而设计的编程语言,利用这一优点便可以加速。
向量化循环
1.一维函数生成代码
for x = 1 : M
f(x) = a * sin((x-1)/(2*pi));
end
代码进行向量优化:
x = 0 : m - 1;
f = A * sin(x/(2*pi));
- meshgrid( ):函数
实现二位函数的评估。[C,R] = meshgrid(c,r);
关于meshgrid的讲解https://jingyan.baidu.com/article/d2b1d1029f82bb5c7f37d45d.html.
2.for循环和向量法的速度比较
function [rt, f, g] = twodsin(A,u0,v0,M,N)
%此函数用于比较for循环和向量法
% 循环基于对函数的运行
% f(x,y) = Asin(u0*x + v0*y)使用for循环
% 输入是M,N和两个参数,
% 首先使用for循环
tic % 计时开始
for r = 1 : M
u0x = u0 * (r - 1);
for c = 1 : N
v0y = v0 * (c - 1);
f(r,c) = A * sin(u0x + v0y);
end
end
t1 = toc;%计时结束
%使用向量法,调用图像g?
tic %time start
r = 0 : M - 1;
c = 0 : N - 1;
[C,R] = meshgrid(c,r);
g = A*sin(u0*R + v0*C);
t2 = toc; %end timing
%比较两个方法的时间
rt = t1 /(t2 + eps);
g = mat2gray(g)
可以将数据可视化为图像imshow(g)
可显示图像
预分配数组
预先创建适当维数的数组,元素为0,可以加快执行时间。
f = zeros(1024);g = zeros(1024);
2.10.5交互式I/O
- disp( argument):
在屏幕上显示信息,argument是一个文本串,显示其字符。
eg:
A = [1 ,2 ;3 ,4]
disp(A)
- t = input(‘message’):
该函数输出message的内容,提示用户,然后获取用户的输入,然后回车,将输入保存在t中。可以输入单个数字,字符串(需要用单引号括起),向量(方括号括起,逗号或空格分开)或其他有效的MATLAB数据结构。
t = input('message','s')
:提示输入一个字符串。
若输入数字,可用str2num转换成double的数字n = str2num(t)
。