2013-04-22 112 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