MATLAB图像处理-流控制和代码优化

第二章基本原理

2.10.3流控制

流控制语句:
MATLAB图像处理-流控制和代码优化_第1张图片
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)

你可能感兴趣的:(图像处理)