声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2338|回复: 1

[编程技巧] 看看我这个程序那里错了

[复制链接]
发表于 2010-11-19 17:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
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);
请问个位高手错在哪了,怎么改。先谢谢啦!
回复
分享到:

使用道具 举报

发表于 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类型的整型数据不支持这样的运算!
明白了吗?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-18 11:28 , Processed in 0.065474 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表