daxiang2008x 发表于 2010-11-19 17:48

看看我这个程序那里错了

function y=LFM_seq(D,be,Tp,s)
% D 为脉冲的压缩比
% Tp 为矩形脉冲信号的宽度(单位为微妙)
% be 为调频信号的起始时间
% s 为计算进度
b=D/(Tp^2); % b为线性的调频扫描频率
ss=1/s;
for t=be:s:(Tp+be)
    n=int16(((t-be)*ss)+1);
    y(n)=exp(j*pi*b*n.^2);
end
Real_x=real(y);
Imag_x=imag(y);
subplot(2,1,1)
plot(Real_x);
xlabel('n');ylabel('Real_x(n)');title('Sequence');
grid
subplot(2,1,2)
plot(Imag_x);
xlabel('n');ylabel('Imag_x(n)');title('Sequence');
grid;


当我输入数据 D=128;be=0;Tp=26;s=0.01;时,在MATLAB理面仿真总是出现下面的错误:
??? Error using ==> mtimes
Complex integer arithmetic is not supported.

Error in ==> LFM_seq at 10
    y(n)=exp(j*pi*b*n^2);
请问个位高手错在哪了,怎么改。先谢谢啦!

zhouyang664 发表于 2010-11-19 21:00

其实这是简单的调试技能!
我在出错语句处设置了一个断点:即语句 y(n)=exp(j*pi*b*n^2);
在此处通过鼠标点取发现:
n = int16(1) ;
我觉得可能是int16不支持这种复数运算吧,正如错误提示。
然后我在command windows中输入(此时处于断点调试状态):
aaa(1) = exp(j*pi*b*1.^2)

aaa =

   0.8282 + 0.5604i
可以正确执行,然而:
aaa(int16(1)) = exp(j*pi*b*int16(1).^2)
??? Error using ==> mtimes
Complex integer arithmetic is not supported.
提示出错,这里问题就出来了:int16类型的整型数据不支持这样的运算!
明白了吗?
页: [1]
查看完整版本: 看看我这个程序那里错了