2013-06-30 109 views
1

是給出
靜止質量ms=1;
ETA-恆定eta=0.45;
可變重複次數,例如N=5;
歐米加OM=sqrt(ks/ms);
角頻率om=eta*OM;
時間段T=2*pi/om;
用於創建函數t=0:0.001:TTT;MATLAB:如何從特定的複合向量製作Hermitean矩陣?

我作出這樣的一個函數上界TTT=1.5;
變量:

kt=zeros(size(t)); 
for j=1:2*N+1 
    n= j-(N+1);  
    if n==0 
     k(j)=ks/2; 
    else 
     k(j)=i/pi/n; 
    end 
    kt=kt+k(j)*exp(i*n*om*t); 
end 

這是一個鋸齒波浪和其他e是我的問題。從具有值1x1501的複數矢量kt雙重我必須使Hermitean矩陣爲變量N。這意味着N可以是5,可以是50,100等。矩陣應該看起來像(圖片): Hermitean matrix

其中k1對於N = 1是k,對於N = 0或k-對於N = -1,1是k。矩陣的大小是2 * N + 1和2 * N + 1。

感謝您的幫助和迴應!

回答

2

這是一個Toeplitz matrix,您可以使用toeplitz命令來生成上面的矩陣。在一般情況下,這將被寫爲:

H = toeplitz(kt(N:end), kt(1:N + 1)) 

其中kt第一Ñ值對應於ķ - Ñ,... ķ -1 ,最後的N + 1的值是 k ,... k N。然而,由於H是厄米特,這可以簡化爲:

H = toeplitz(kt(N:end)); 
+1

謝謝相等或更大,我知道這是特定的矩陣,但我不記得名字:) – MrPitivier

1

嘗試此代碼:

k=[1 2+i 3+i 4+i 5+i]; 
N=7; 
M=diag(k(1)*ones(N,1)); 

for j=1:length(k)-1 
    M=M+diag(k(j+1)*ones(N-j,1),j)+diag(conj(k(j+1))*ones(N-j,1),-j) 
end; 

這裏N必須大於k陣列的長度

+0

謝謝,它也是有用的;) – MrPitivier