一,算法需求
算法五特性
(1)有穷性。有穷性是指算法需在有穷步骤、有穷时间内结束。
(2)确定性。确定性是指每个步骤都有确切的意义,相同的输入有相同的输出。
(3)有效性。有效性是指可通过已实现的运算在有限次完成,或叫可行性。
(4)输入。
(5)输出。
二,分支语句
1,分支结构
·分支语句的作用:判断当前的情况来决定下一步的工作
·一般情形:MATLAB提供了if-else-end结构和switch-case-otherwise结构来实现分支功能。
·特殊情形:try-catch结构是分支选择结构的一种特殊形式。
如果程序的bugs在try语句块中,那么程序将会执行catch语句块。
try-catch语句可以用于捕捉错误。
问:为什么try-catch应用较少?
在当前Matlab的脚本高debuq运行模式下,采用dbstopiferror等语句更加简洁,当针对特殊异常捕获时才会使用try-catch。
2,if-else-end
3,switch-case-otherwise
注意:switch语句判断的时delta值的本身,而不是判断语句
三,循环语句
循环语句的作用:对重复性工作进行执行,并提供起始和结束的标志·
MATLAB提供了for结构和while结构来实现循环功能。
-for语句循环的特点是判断条件通常是对循环次数的判断,一般循环次数预先设定好;
-while语句直接将逻辑判断语句作为控制条件
原则上while的适用范围更广一些。但在一般操作中for循环的应用更加广泛。
1,for结构
index在values中按顺序进行取值,value一般是行向量形式,一般采用冒号表达式进行生成
2,while结构
3,组合控制
除了在判断中对代码下一步进行控制,还具有三种特殊控制符
break 跳出循环体
continue 跳过本次循环
return 跳出函数体 在matlab的一般使用中较少应用return
4,循环体与矩阵
Matlab具有非常优异的矩阵运算优势,能用矩阵运算则用矩阵
1.尽量避免对矩阵元素进行循环遍历操作
2.循环体中的参量应提前预留空间,避免在循环中新建空间
5,多线程循环
*parfor中不能存在二级循环结构
*parfor由于是并行体系,其不同循环中数据不能冲突
*parfor中不能使用break/continue
function imgfin=parfor img(T,S,defocus tM,CC)
imgfin=zeros(M,2*T);
parfor ji=l:M
imgfin(jj,:)=Quick Defocus img deta(T,0.5,1,2*T,T,S,defocus t,cc);
end
end
第一次使用parfor时需要启动线程,需要消耗一定时间:
在for循环占耗时主体的函数中,可设计parfor来加速
四,自定义函数
尽管完全在MATLAB命令行中进行许多有用的计算,但迟早需要编写M文件它们是其他编程语言中
程序、函数、子程序和过程的等价物。将一系列命令收集到一个M文件中会带来很多可能性,包括
·通过编辑文件而不是重新键入一长串命令来实现算法,
·对数值实验进行永久记录,
·建立日后可重复使用的公用设施,
·与他人交换M文件。
M-File的两种主要形式
·脚本:可直接运行、编辑、调试的一组代码
·函数:进行特定输入/输出的一组代码