字符串操做總結
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