matlab标准化中只有小于等于,matlab判断小于某个值时判断错误?

程序是这样的:

T=10e-6;

K=B/T;

B=50e6;

Fs=4*B;

N=T*Fs;

t=linspace(-T/2,T,1+3*N/2);

for m=1:3001

if m

xt(m)=exp(1i*pi*K*(t(m).^2));

end

if (m>=N/2+1) && (m<=N+1)      /*这行判断出错*/   (*)

xt(m)=exp(1i*pi*K*(t(m).^2))+exp(1i*pi*K*((t(m)-T/2).^2));   (**)

end

if (m>N+1) && (m<=3*N/2+1)

xt(m)=exp(1i*pi*K*((t(m)-T/2).^2));

end

end

如上,计算可得N=2000.0,由判断条件可知m=1001=N/2+1时,应该采用(**)式,计算结果xt(1001)=0。

但是上述程序运行结果xt(1001)= 1.0000 + 0.0000i

要想得到正确结果,程序必须改成这样:

for m=1:3001

if m<1001

xt(m)=exp(1i*pi*K*(t(m).^2));

end

if (m>=N/2+1) && (m<=N+1)      /*这行判断出错*/   (*)

xt(m)=exp(1i*pi*K*(t(m).^2))+exp(1i*pi*K*((t(m)-T/2).^2));   (**)

end

if (m>N+1) && (m<=3*N/2+1)

xt(m)=exp(1i*pi*K*((t(m)-T/2).^2));

end

end

或者

for m=1:3001

if m

xt(m)=exp(1i*pi*K*(t(m).^2));

end

if (m>=1001) && (m<=N+1)      /*这行判断出错*/   (*)

xt(m)=exp(1i*pi*K*(t(m).^2))+exp(1i*pi*K*((t(m)-T/2).^2));   (**)

end

if (m>N+1) && (m<=3*N/2+1)

xt(m)=exp(1i*pi*K*((t(m)-T/2).^2));

end

end

也就是程序中出现的两个”N/2+1“至少有一个必须改为1001,请问这是为什么?实在是不解啊。

O(∩_∩)O谢谢!

:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值