Matlab從入門到精通(五)--常用函式
1、傅立葉(Fourier)變換及拉普拉斯(Laplace)變換
在MATLAB中,進行傅立葉變換的函式是:
fourier(f,x,t):求函式f(x)的傅立葉像函式F(t)。
ifourier(F,t,x):求傅立葉像函式F(t)的原函式f(x)。
在MATLAB中,進行拉普拉斯變換的函式是:
laplace(fx,x,t):求函式f(x)的拉普拉斯像函式F(t)。
ilaplace(Fw,t,x):求拉普拉斯像函式F(t)的原函式f(x)。
2、常用聲音函式
lin2mu :將線性音訊訊號轉換為mu法則
mu2lin :將mu法則轉換為線性音訊訊號
sound :把向量轉換為聲音
soundsc :測量資料並作為聲音播放
3、特殊聲音函式
auread :讀入next/sun聲音檔案(字尾為.au)
auwrite :寫au聲音檔案
WAV聲音檔案
waveread :讀聲音檔案
wavewrite:寫聲音檔案
4、排序演算法
colmmd :進行列的最小度排序
colperm :基於非零演算法排序
dmperm :Dulmage-Mendelsohn分解
randperm:隨機置換
symmmd :對稱最小度排序
symrcm :反向Cuthill-McKee排序
condest :矩陣條件數估計
normest :矩陣範數估計
5、線性方程的稀疏系統
bicg :雙共扼梯度法
bicgstab:雙共扼梯度穩定法
cgs :二次共扼梯度法
cholinc :不完全Cholesky分解
cholupdate:Cholesky分解的秩1修正
gmres :廣義最小殘差法
luinc :不完全的LU分解
pcg :預處理共扼梯度法
qmr :Quasi_Minimal殘差法
eigs :少數特徵值和特徵向量
svds :少數奇異值
spparms :設定稀疏矩陣程式的引數
6、inline函式
inline用來定義函式,使用方法如下:
【例一】
f = inline('x^2+1');
f(2)
ans =
5
【例二】
f = inline('x*y+9*x+7*y^2-2');
f(1,1)
ans =
15
定義匿名函式:
[email protected](x)sin(x);%定義匿名函式f(x)=sin(x)
7、eval函式
eval函式可以用來計算“語句”串或者建立變數。
【例一】:建立變數
【例二】:計算“語句”串
8、feval()函式
feval就是把已知的資料或符號帶入到一個定義好的函式控制代碼中。下面舉例說明:
【例一】:將資料帶入定義好的函式控制代碼中
>> t = 2;
>> Y = inline('X^2 + Y^2');
>> k1 = feval(Y,1,t)
k1 =
5
>> k2 = feval(Y,t,0)
k2 =
4
>> k3 = feval(Y,1,2)
k3 =
5
>> k4 = feval(Y,1,1)
k4 =
2
>> k5 = Y(1,1)
k5 =
2
【例二】:將符號帶入定義好的函式控制代碼中
>> syms t ;
>> H = inline('X^2 + Y^2');
>> k1 = feval(H,1,t)
k1 =
t^2 + 1
>> k2 = feval(H,t,1)
k2 =
t^2 + 1
>> k3 = feval(H,t^2,2*t)
k3 =
t^4 + 4*t^2
注:
- 對字串型別函式只能用eval ,而不能用feval;
- 函式控制代碼只能被feval 運用,而不能被eval 呼叫.
9、測試向量中所有元素是否為真
all()函式可以測試向量中是否所有元素為真。
【例一】
>> A = 1:2:13
A =
1 3 5 7 9 11 13
>> all(A)
ans =
1
>> A = -3:1:3
A =
-3 -2 -1 0 1 2 3
>> all(A)
ans =
0
【例二】
>> B = [1 2 4;0 9 8;5 7 9]
B =
1 2 4
0 9 8
5 7 9
>> all(B)
ans =
0 1 1
>> C = [1 0 4; 2 5 -9; 90 8 12]
C =
1 0 4
2 5 -9
90 8 12
>> all(C)
ans =
1 0 1
10、計算向量的長度
10.1 lenth函式
>> A = [ 12 3 6 13];
>> length(A)
ans =
4
注:對於矩陣P而言,length(P)等價於max(size(P)).
10.2 numel函式
>>numel(A)
ans =
4
11、一些返回邏輯值的函式
函式 |
描述 |
Iscell(C) |
若C是單元陣列,則為真(即返回1) |
Iscellstr(s) |
若s是字元單元陣列,則為真 |
Ischar(s) |
若s是字串,則為真 |
Isempty(A) |
若A是空陣列[],則為真 |
Isequal(A,B) |
若A和B有相同的元素和維數,則為真 |
Isfield(S,’name’) |
若’name’是結構S的一個域,則為真 |
Isfinite(A) |
若陣列的元素有限,則為真 |
Isinf(A) |
若陣列的元素無限,則為真 |
Isletter(A) |
若陣列A的元素是字母表中的字元,則為真 |
Islogical(A) |
若陣列A是邏輯陣列,則為真 |
Ismember(A,B) |
若陣列A的元素也是B的元素,則為真 |
Isnan(A) |
若陣列的元素為NaN,則為真 |
Isnumeric(A) |
若A是數值陣列,則為真 |
Isprime(A) |
若A的元素是素數,則為真 |
Isreal(A) |
若陣列A的元素無虛部,則為真 |
Isspace(A) |
若陣列的元素為空白字元,則為真 |
Issparse(A) |
若A是稀疏矩陣,則為真 |
Isstruct(S) |
若S是一個結構,則為真 |
12、查詢矩陣中滿足條件的元素的下標
A = [1 2 3;4 5 6;7 8 9];
f = find(A);%找出A中非零元素的下標
f = find(A>2);%找出矩陣中元素值大於2的元素下標
f = find(3<A&A<6);%找出矩陣中元素值介於3,6的元素的下標
f = find(A~=2);%找出元素值不為2的元素的下標
13、獲取變數型別
使用class(X)函式可以獲取變數或者常量X的型別。
例:
>> A= [1+2*i 3;3 6];
>> class(A)
ans =
double
14、matlab中的日期時間函式
14.1說明
matlab中表示日期時間有三種格式:
(1)日期字串(20-oct-2008等)
有很多格式可以選擇,date函式返回的就是該格式
(2)連續日期數值(7.337417231638542e+005)
以公元元年1月1日為起點計算經過的天數,now函式返回的就是該格式
(3)日期向量(1.0e+003*[2.0070 0.0100 0.0280 0.0160 0.0210 0.0016])
[年 月 日 時 分 秒],clock返回的就是該函式
14.2獲取當前日期時間函式
1.date:按照日期字串格式返回當前系統日期
2.now:按照連續的日期數值格式返回當前系統時間
3.clock:按照日期向量格式返回當前系統時間
>>date,now,clock
ans =
29-Nov-2008
ans =
7.3374e+005
ans =
1.0e+003 *
2.0080 0.0110 0.0290 0.0160 0.0410 0.0259
14.3讀取時間的某個部分
matlab中分別使用year,month,day,hour,minute,second從上面講到的字串和連續型日期時間格式中提取年月日時分秒等資訊
>>[year(date),year(now)]
ans =
2008 2008
注意:上面的函式是沒法從向量型日期時間格式中正確讀取上述資訊的
>>year(clock)
ans =
5 0 0 0 0 0
15、日期格式轉換
1.datestr(D,F):將任意格式的日期時間D按指定格式F轉成日期字串格式
2.datenum:將任意格式的日期時間D轉成連續日期格式
3.datevec:將任意格式的日期時間D轉成時間向量格式
注意上面三種時間格式之間的任意轉換有很多格式選擇,根據需要自己調整,具體那些格式可以看幫助系統
16、計時函式
在編寫程式時,經常需要獲知程式碼的執行實際時間,這就需要在程式中用到計時函式,matlab中提供了以下三種方法:
1.cputime(單位不明)
返回matlab啟動以來的CPU時間,可以在程式執行錢儲存當時的CPU時間,然後在程式執行結束後用cputime減去執行前儲存的數值,就可以獲取程式的實際執行時間
>>t0=cputime;pause(3);TimeCost=cputime-t0
2.tic/toc(單位s)
tic用在程式的開始,作用是啟動一個計時器,然後在程式尾部放一個toc,表示終止計時器,並返回tic啟動以來的總時s間
3.etime(單位s)
etime(t1,t2)用來計算兩個日期向量t1和t2之間的時間差,結合前面講到的clock函式也可以用來確定程式程式碼的執行時間
>>t0=clock;pause(3);TimeCost=etime(clock,t0)
在三種計時中建議使用第二種,相對來說最精確。
17、求矩陣的條件數
cond(X,1);%求矩陣X的第一條件數
cond(X,2);%求矩陣X的第二條件數
cond(X,inf);%求矩陣X的無窮條件數
cond(X,’fro’);%求矩陣X的Frobenius條件數
cond(X);%求矩陣的第二條件數,等價於cond(X,2)