信号的相位有序跳变时,如测试1所示;随机跳变时,如测试2所示,
测试代码如下,
clc;clear vars;close all;
% 常量
GHZ = 1e9;
MHZ = 1e6;
KHZ = 1e3;
HZ = 1;
NS = 1e-9;
US = 1e-6;
MS = 1e-3;
S = 1;
% 信号参数
FS = 2000*MHZ;
TS = 1/FS;
N = 65536;
t = (0:N-1)*TS;
f = 200*MHZ;
phi_1 = 0;
phi_2 = pi;
sig1 = cos(2*pi*f*t + phi_1);
sig2 = cos(2*pi*f*t + phi_2);
each_len = 512;
iter_num = floor(N/each_len);
freq_vec = (0:N-1)/N*FS/MHZ;
each_bw = 1/(each_len*TS)/MHZ;
fprintf('each_bw --> %12.6f MHz\n',each_bw);
sig = zeros(1,iter_num*each_len);
% 相位有序跳
code_mask = zeros(1,iter_num);
code_mask(1,2:2:end) = 1;
for m=1:iter_num
if (code_mask(1,m)==0)
sig(1,(m-1)*each_len+1:m*each_len) = sig1(1,(m-1)*each_len+1:m*each_len);
else
sig(1,(m-1)*each_len+1:m*each_len) = sig2(1,(m-1)*each_len+1:m*each_len);
end
end
y_sig = fft(sig);
figure;
plot(freq_vec,20*log10(abs(y_sig)));
title('测试1');
% 相位随机跳
code_mask = randi([0,1],1,iter_num);
for m=1:iter_num
if (code_mask(1,m)==0)
sig(1,(m-1)*each_len+1:m*each_len) = sig1(1,(m-1)*each_len+1:m*each_len);
else
sig(1,(m-1)*each_len+1:m*each_len) = sig2(1,(m-1)*each_len+1:m*each_len);
end
end
y_sig = fft(sig);
figure;
plot(freq_vec,20*log10(abs(y_sig)));
title('测试2');