字符串操做总结
char(S1,S2,…)
利用给定的字符串或单元数组建立字符数组
double(S)
将字符串转化成ASC码形式
cellstr(S)
利用的给定的字符数组建立字符串单元数组
blanks(n)
生成一个由n个空格组成的字符串
deblank(S)
删除尾部的空格
eval(S) evalc(S)
使用MATLAB解释器求字符串表达式的值
ischar(S)
判断是否是字符串数组
iscellstr(C)
判断是否是字符串单元数组
isletter(S)
判断是否是字母
isspace(s)
判断是否是空格
strcat(S1,S2,…)
将多个字符串水平竖直排列
strvcat(S1,S2,…)
将多个字符串竖直排列
strcmp(S1,S2)
判断字符串是否相等
strncmp(S1,S2,n)
判断前n个字符串是否相等
strcmpi(S1,S2)
判断字符串是否相等(忽略大小写)
strncmpi(S1,S2,n)
判断前n个字符串是否相等(忽略大小写)
strtrim(S1)
删除结尾的空格
findstr(S1,S2)
查找
strfind(S1,S2)
在S1种查找S2
strjust(S1,type)
按照指定的type调整一个字符串数组
strmatch(S1,S2)
查找要求的字符串的下标
strrep(S1,S2,S3)
将字符串S1中出现的S2用S3代替
strtok(S1,D)
查找S1 中的第一个给定的分隔符以前和以后的字符串
upper(S)
将一个字符串成大写
lower(S)
将一个字符串转换为小写
num2str(k)
将数字转换成字符串
int2str(k)
将整数型转换为字符串
mat2str(k)
将矩阵转换为字符串,供eval使用
str2double(S)
将字符串数组转化为数值数组
sprintf(S)
建立含有指定格式的字符串
sscanf(S)
按照指定的控制格式读取字符串
C{3}对内容进行寻址
C(3)对单元索引
(24)利用正在表达式搜索
>> str=’asdfa sfdgdfg tyefgr tyj sdfg qwfge r rety yi .,m zxfgc fdgh fgh’;
>> regexp(str,’fg’)
ans =
12 18 29 34 54 63
咱们可使用字符类来匹配指定的字符,如一个字母,一个数字或一个空格符,也能够用来匹配一个字符集。最有用的一个字符类是一个句号(.),它用来表示任意的单个字符。另一个有用的字符类是位于方括号中的字符序列或某一部分字符,这一语法用来表示寻找与方括号中任何一个字符元素匹配的字符串子集。例如:
咱们要在str中寻找第一个字符为d,最后一个字符为f或g的三个字符组合,可使用下面的代码,
>> regexpi(str,’d.[fg]’)
ans =
11 28
>> regexpi(str,’s.[fg]’,'match’) 列出来
ans =
’sdf’ ’sdf’
>> regexp(str,’[a-d]’)
ans =
1 3 5 9 11 28 56 59 列出a-d全部
(25) 关系运算:
xor(x,y) 异或关系
any(X) X中有一个不为零,结果就为一
all(X) X中只要有一个为零即为零。
B=B+(B==0)*eps,这样能够避免零的出现
>> B=-2:2
B =
-2 -1 0 1 2
>> x=sin(B)./B
Warning: Divide by zero.
x =
0.4546 0.8415 NaN 0.8415 0.4546
>> B=B+(B==0)*eps
B =
-2.0000 -1.0000 0.0000 1.0000 2.0000
>> x=sin(B)./B
x =
0.4546 0.8415 1.0000 0.8415 0.4546
(26)流程控制
switch expression
case test_expression
(commands1)
case test_expression
(commands2)
case test_expression
(commands3)
..
end
try
(commands1)
catch
(command2)
end
在这里,将(commands1)中的命令都执行,若是没有错误,程序控制将直接跳到end。若是哟错误,程序控制酒当即跳到catch语句。执行表达式(commands2).
利用lasterr函数能够返回代码执行遇到的河中错误:
>> matlab(:)
??? Undefined function or variable “matlab”.
>> lasterr
ans =
Undefined function or variable “matlab”.
另外利用lasterror能够将更详细的错误信息返回到一个结构体中:
>> errstr=lasterror
errstr =
message: ‘Undefined function or variable “matlab”.’
identifier: ‘MATLAB:UndefinedFunction’
stack: [0×1 struct]
>> errstr.message
ans =
Undefined function or variable “matlab”.
>>(27) 函数
error(‘afgfadgsdf’) 终止程序,而且返回括号中的内容
error和fprintf同样能够在字符串中格式化显示的数字变量
warning() 同样的 只是程序继续运行。
pcode myfunction 其中myfunction是要编译的m文件,利用这个命令能够建立伪码文件,提升运行速度。
(28)建立用户本身的工具箱
当一个工程鳊好以后,咱们能够把它存在toolbox文件夹中,这样matlab就能够把它这些文件再如到高速缓存区去,提升速度。为了便于文件的管理,和往后的维护,咱们最好添加两个脚本文件:Readme.m和Contents.m这两个文件不执行任何操做,而所有由一些注释行组成。
(29)getpref 获取 setpref 设置, addpref 添加 rmpref 删除, ispref, uigetpref, uisetpref 工具箱或者函数的优先权
(30)建立命令:
看一下edit命令就知道了。
(31) 函数句柄和匿名函数:
>> il_humps=inline(’1./((x-.3).^2+.01)+1./((x-.9).^2+.04)-6′,’x')
il_humps =
Inline function:
il_humps(x) = 1./((x-.3).^2+.01)+1./((x-.9).^2+.04)-6
inline函数从一个字符串建立一个函数,并以x为输入变量。
要验证一个字符串表示的函数或者内联函数,可使用feval函数。
>> z=feval(’sin’,pi*(0:4)/4)
z =
0 0.7071 1.0000 0.7071 0.000
>> z=feval(il_humps,[-1 0 1])
z =
-5.1378 5.1765 16.0000
下面建立一个匿名函数:
>> af_humps=@(x)1./((x-.3).^2+.01)+1./((x-.9).^2+.04)-6
af_humps =
@(x) 1./((x-.3).^2+.01)+1./((x-.9).^2+.04)-6
>> af_humps(-1:1)
ans =
-5.1378 5.1765 16.0000
>> a=1;b=2;
>> asda=@(x) sin(a*x).*cos(b*x);
>> asda(-1:1)
ans =
0.3502 0 -0.3502
>> fhan={@sin @cos}
fhan =
@sin @cos
>> fhan{1}(1:2)
ans =
0.8415 0.9093
str2func()
func2str()
(32) 嵌套函数
若是一个函数包含嵌套函数,则不管是嵌套函数仍是住函数,都必须以end结尾:
嵌套函数与子函数的区别:
嵌套出如今主函数声明以后的任意位置,而子函数只能出如今主函数以后。
嵌套能够访问主函数工做区中的任何变量值,而子函数只能经过参数访问主函数工做区的某些变量。
主函数能够访问嵌套函数工做区中的全部变量,而只可以经过子函数的输出访问子函数工做区的某些变量
(33)m文件的调试和剖析
keyboard
mlint
depfun
利用profile能够剖析程序的效率
一种办法:直接打开profile,另一种办法利用如此下代码:
>> profile on
>> for i=1:100
test(1:100);
end
profile viewer
(34)Matlab数据文件
save and load
save var1 var2 var3
save filename var1 var2
save(‘filename’,’var1’,’var2’,…)
load功能和save相反
vnew=load(‘filename’,’var1’,’var2’) 将变量存在vnew结构体中。
fprintf
>> a=[1 2 3;4 5 6;7 8 9]
a =
1 2 3
4 5 6
7 8 9
>>fid = fopen('exp.txt','w');
fprintf(fid,'%2.0f\n',a);
fclose(fid);
>> type exp.txt
1
4
7
2
5
8
3
6
9
fprintf输出是一列一列的从左到右输出。
>> dlmwrite('eg2.dat',a,'\n');
>> type eg2.dat
1
2
3
4
5
6
7
8
9
fprintf输出是一行一行的从上到下输出。
文件的读和写
clc
clear all
fid1 = fopen('F:\example\1.txt','r');
a=fgetl(fid1);
fclose(fid1);
fid2 = fopen('F:\example\2.txt','a');
fprintf(fid2,'%s\n',a);
fclose(fid2);
type F:\example\2.txt%显示文本的内容
fprintf(fid,'%s\r\n',x); %的状况下就能够把数据输出的文件而且换行 express