matlab中m文件以及流程控制
m文件基本结构:function[output]=functionname(input);
m文件说明:函数定义行,H1备注说明函数用途,可作为索引。。。。
.运算是相同大小的矩阵,对应元素运算。
关于/(右除)正常的,\(左除)不正常的。
[C,I]=max(...),返回最大值C,和位置索引I。
库函数improd(A,B)=A.*B;
关于 关系运算法:A==(或者>,<,>=,<=)B;ENTER;比较A B对应元素,若相等则为1,不等为0;
逻辑流程控制:
(1)if expression
statements
end
(2)for index1=start1:perlength:end
statements1
end
(3)while expression1(为真时,进入循环)
statements
end
(4)break,遇到break跳出循环,执行循环外的第一句,仅跳出包含它的最内层。
(5)switch switch_expression
case case_expression
statement(s)
case{case_expression1,case_expression2,...}仅用于unit8,unit6,double类型图像
statement(s)
otherwise
statement(s)
end
举例
a=10;
b=5;
while a>0
a=a-1;
while b>0
b=b-1;
end
end
A==imread('C:\MATLAB7\work\DigitalImageProcessing(Gonzalez)\data\d.jpg');%读取图像
for q=0:5:20
filename=(sprintf('qq_%3d.jpg',q);
imwrite(A,filename,'quality',q);
end
B=imread('C:\MATLAB7\work\DigitalImageProcessing(Gonzalez)\data\d.jpg');%读取图像
A=im2bw(B);
switch newclass
case 'unit8'
g=im2unit8(A);
case 'uint16'
g=im2unit16(A);
case 'double'
g=im2double(A);
otherwise
error('unknown or improper image class.')
end
关于代码优化:
matlab为数组运算而设计的编程语言,故而尽量数组化运算。
一维数组化:x=0:100;二维数组化[C,R]=meshgrid(x,y);
计算运行时间:tic(开始计时) 程序 t1=toc;(结束计时)。t1就是运行时间。
关于交互式I/O编程:
(1)disp(.)用于显示.到屏幕上,而没有ans等 等号左边的内容,可显示任何东西文字字符串等等,文字要加''。
(2)t=input(' 输入文字(对要输入对象的说明) ','s'),s为字符串或数组。若单纯输入数字,则使用n=str2num(t);
若输入既有字符又有数字,用[a,b,c,d...]=strread(t,'%f%q%q',',')提取。
>> t=input('输入名字,年龄,性别','s')
输入名字,年龄,性别王,23,男
t =
王,23,男
>> [a,b,c]=strread(t,'%c%f%c',',')
(3)混合数组以及提取:c={'sun',[1 2 3;2 3 4],3};提取c{1}=sun......
提取另一种方式,将c作为结构体,用c.char_string搜索字符串,用c.matrix搜索矩阵,用c.scalar搜索数字。