MATLAB报错,不知道错误在哪
代码:
maxR = 200; % 雷达最大探测目标的距离
rangeRes = 1; % 雷达的距离分率
maxV = 70; % 雷达最大检测目标的速度
fc= 77e9; % 雷达工作频率 载频
c = 3e8; % 光速
r0 = 90; % 目标距离设置 (max = 200m)
v0 = 10; % 目标速度设置 (min =-70m/s, max=70m/s)
B = c / (2*rangeRes); % 发射信号带宽 (y-axis) B = 150MHz
Tchirp = 5.5 * 2 * maxR/c; % 扫频时间 (x-axis), 5.5= sweep time should be at least 5 o 6 times the round trip time
endle_time=6.3e-6; %空闲时间
slope = B / Tchirp; %调频斜率
f_IFmax= (slope*2*maxR)/c ; %最高中频频率
f_IF=(slope*2*r0)/c ; %当前中频频率
Nd=128; %chirp数量
Nr=1024; %ADC采样点数
vres=(c/fc)/(2*Nd*(Tchirp+endle_time));%速度分辨率
Fs=Nr/Tchirp; %模拟信号采样频率
t=linspace(0,Nd*Tchirp,Nr*Nd); %发射信号和接收信号的采样时间
Tx=zeros(1,length(t)); %发射信号
Rx=zeros(1,length(t)); %接收信号
Mix = zeros(1,length(t)); %差频、差拍、拍频、中频信号
Tx(i) = cos(2*pi*(fc*t(i) + (slope*t(i)^2)/2)); % 发射信号 实数信号
plot(Tx(1:1024));
xlabel('点数');
ylabel('幅度');
title('TX发射信号时域图');
if i<=1024
freq(i)=fc+slope*i*Tchirp/Nr; %发射信号时频图 只取第一个chirp
freq_echo(i)=fc+slope*i*Tchirp/Nr;%回波信号频谱延迟
end
plot(t(1:1024),freq);
xlabel('时间');
ylabel('频率');
title('TX发射信号时频图');
这段代码存在多个错误。
1、变量i没有定义,因此在Tx(i)和freq(i)中会出现未定义的变量。需要先定义i。
2、在定义Tx时,应该使用for循环来迭代计算每个时间点上的发射信号,否则只有Tx的最后一个元素会被赋值,其他元素的值都为0。
3、在计算freq和freq_echo时,需要使用for循环来迭代计算每个时间点上的频率,否则只有freq和freq_echo的前1024个元素会被赋值,其他元素的值都为0。
4、在计算freq和freq_echo时,应该先将它们初始化为长度为Nd的向量,否则如果i大于1024时,会出现“数组下标越界”的错误。
不知道你这个问题是否已经解决, 如果还没有解决的话: