Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab:如何从循环中输入向量?_Matlab_Loops_Vector - Fatal编程技术网

Matlab:如何从循环中输入向量?

Matlab:如何从循环中输入向量?,matlab,loops,vector,Matlab,Loops,Vector,我有一些变量: 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..% e

我有一些变量:

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.:)
感谢您的帮助和回复:)

我个人会这样做:

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

你说的“类型向量”是什么意思?您想在屏幕上打印它吗?您介意将预期结果发布到fpe吗?您需要条件,即n==0 f(j)=f0/2,因此您的简单方法不起作用;)我需要这个循环,我只需要打印一个带有f(j)的向量loop@KarelDrazdilD:请确保
n(6)=0
f(6)=50
完全符合您的要求。@KarelDrazdil:而且,顺便说一句,您在没有任何循环的情况下达到了您想要的结果,这是MATLAB的纯本质!@fpe:是的,如果你把它写在纸上,但是你的代码在Matlab中不工作,你不能这样做:sth/0->没有定义!这就是数学,在Matlab中尝试一下,您将看到;)你明白吗