2013-04-22 111 views
-3

我有變量:Matlab:如何從循環輸入向量?

f0=100; 
N=5; 

然後我輸入這個循環:

f=zeros(size(2*N+1)); 
for j=1:2*N+1 
    n= j-(N+1);  
     if n==0 
      f(j)=f0/2; 
     else 
      f(j)=f0*((exp(-i*n*2*pi)*(i*2*pi*n+1)-1)/(4*pi^2*n^2)); 
     end 
    f= %...xx something xx..% 
end 

所以,我想獲得一個矢量f =(F(-5)F(-4).. f(0)... f(5)),大小爲2 * N + 1 = 11。顯然用於檢查,f(0)應該是50. :) 謝謝你的幫助和你的迴應:)

+0

你是什麼意思 「型載體」 是什麼意思?你想要在屏幕上打印嗎? – 2013-04-22 16:17:43

+0

你會介意發佈預期結果嗎? – fpe 2013-04-22 16:23:25

回答

1

我親自以這種方式進行:

f0 = 100; 
n = 1:5;  
f=f0.*((exp(-i.*n.*2.*pi).*(i.*2.*pi.*n+1)-1)./(4.*pi.^2.*n.^2)); 
f = [-fliplr(f) f0/2 f]; 

或更容易:

f0 = 100; 
n = -5:5;  
f=f0.*((exp(-i.*n.*2.*pi).*(i.*2.*pi.*n+1)-1)./(4.*pi.^2.*n.^2)); 
f(ceil(numel(n)/2)) = f0/2; 

    f = 

    Columns 1 through 4 

    -0.0000 - 3.1831i -0.0000 - 3.9789i -0.0000 - 5.3052i -0.0000 - 7.9577i 

    Columns 5 through 8 

    -0.0000 -15.9155i 50.0000   -0.0000 +15.9155i -0.0000 + 7.9577i 

    Columns 9 through 11 

    -0.0000 + 5.3052i -0.0000 + 3.9789i -0.0000 + 3.1831i 
+0

到fpe: 你需要條件,即n == 0 f(j)= f0/2,所以你更簡單的方法不工作;)我需要這個循環,我只需要打印一個矢量f(j )。 – MrPitivier 2013-04-22 17:59:45

+0

to Eitan T: 如何輸入=如何從此循環中獲取/到達矢量 – MrPitivier 2013-04-22 18:00:56

+0

@KarelDrazdil D:完全按照您的需要查看「n(6)= 0」和「f(6)= 50」。 – fpe 2013-04-22 18:03:23