请教一个关于循环的小问题
y=cos(2*pi*k*j/N)其中,N为常数,k为整数,即在整数范围内变化。比如可以取k=4,5,6,..........,20.j=1,2,.........,N-1. 常数N可以任设一个数,不影响的。比如可以设N=20。请问这个可以怎么写呀?拜托各位大侠帮帮忙啦!! 小弟感激不尽啦!![ 本帖最后由 liushuiwuxin 于 2010-4-19 11:11 编辑 ] 真的不太明白LZ确实要的!?
了不起两个for loop解决 呵呵是用两个for解决问题了
各位帮我看看这个程序吧
N=2000; T=20; a=0.25;tt=T/N; j=; tj=j*tt; % t相当于j
k=; sk=a+i*2*pi*k/T;
for m=1:N
for n=1:N
Y(m,n)=cos(k(m)*j(n)*2*pi/N);
Z(m,n)=i*sin(k(m)*j(n)*2*pi/N);
end
end
YY=sum(Y)
ZZ=sum(Z)
为什么Y(m,n)后面要是不加分号就会循环不完呀?加了分号后是可以得出结果,可是算出的YY却是零,还请各位大侠帮帮忙直接一下,谢谢啦!!
[ 本帖最后由 ChaChing 于 2010-4-20 00:42 编辑 ] 不加分号, Y(m,n)会输出, 而且Y矩阵愈来愈大(最后2000*2000), 当然循环不完!
至于算出的YY为何是零? LZ高估我了! 个人水平专业有限, 那清楚LZ做什么!?
但YY也并非是零! 加format short e再看看 恩知道了非常感谢!:handshake 应该可以通过meshgrid实现:
=meshgrid(k,j);
Y=cos(K.*J*2*pi/N); Nsum=2000;N=200;T=20;a=0.25;k=;sk=a+i*2*pi*k/T;
syms s x t
V=0.2;l=0.5;xk=0.2;o=0.1029;P=60;c=V*(o/P)^(1/2);
m=1/(1-c); n=1/(1+c);
G=(exp(n*(x-xk))-exp(n*x-m*xk)+exp(n*(x+l)-m*(l+xk))-exp(n*(l-xk+x)-m*l))/(2*s*(1-exp((n-m)*l)));
for m=1:Nsum+1
Y(m)=cos(k(m)*t*2*pi/N);
Z(m)=i*sin(k(m)*t*2*pi/N);
w(m)=subs(G,s,sk(m));
end
YY=Y+Z;
w11=0.01*w.*YY;
w1=vpa(w11,6);
tt=T/N;
p=;%j=;
tj=p*tt;
for h=1:N
w2=subs(w1,t,tj(h));
end
w3=eval(sum(w2));
w4=real(w3);
w5=eval(-(1/2)*(subs(G,s,0.25)));
w6=w5+w4;
c=2*exp(a*tj)/T;
W=c.*w6;
W1=eval(subs(W,x,0.1));
plot(tj,W1)
上面这个程序在计算for h=1:N w2=subs(w1,t,tj(h)) end这一步的时候要花很长很长的时间,好像是由于subs这个函数本身计算起来就有些复杂,所以需要的时间很长。我想请问各位大大有没有什么方法提高这个计算速度呀,或者是用其他更有效的方法来计算我的这个函数的值呢?下面附上我要计算的函数式,耐烦各位大大指点一二,谢谢啦!!
[ 本帖最后由 liushuiwuxin 于 2010-4-21 21:46 编辑 ]
页:
[1]