T = 1;
BW = 150;
k = BW/T;
h=figure();
N_0 = length(t_0);
设置初始参数,带宽在书中给出,为150Hz,h=figure()是为了后面将所有的图在一张图中显示。
p0_0 = t_0+2;
p0_max_0 = max(max(p0_0));
p_0 = p0_0./p0_max_0;
信号幅度修正,这里加的2这里的数越大,产生的图像斜率越大。
dt = 1/400;
t = 0:dt:T;
fs = 1/dt;
% 信号幅度修正
p0 = t+2;
p0_max = max(max(p0));
p = p0./p0_max;
N = length(t);
% 频率
f = (0:N-1)*fs/N - fs/2;
同样的,构造采样后的参数。
f0 = 25+(i-1)*50;%初始频率f0
%生成信号
s_0 = cos(2*pi*(f0.*t_0+0.5*k*t_0.^2)).*p_0; % 实数基带
% 进行fft
F_0 = fftshift(fft(s_0,N_0));
F_0 = F_0./max(abs(F_0));
生成初始信号,i从1到9,与书中移动九次一致,先生成初始的信号,然后进行傅里叶变换,归一化后即可直接绘图。
%采样信号
s = cos(2*pi*(f0.*t+0.5*k*t.^2)).*p;
% 进行fft
F = fftshift(fft(s)./ N );
F = F./max(abs(F));
生成采样信号,然后对其进行相同处理。
figure(h); hold on
subplot(9,2,2*(i-1)+1 );plot( f_0, abs(F_0) ); ylabel('幅度');grid on;
title( ['FC=',num2str(f0+BW/2)])
subplot(9,3,3*(i-1)+3 );plot( f, abs(F) ); ylabel('幅度');grid on;
if i == 1
title('采样后的频率');
end
end
最后绘制图形。这里可看出,如果在最开头没有加入h=figure,则会产生九张图。
附上完整代码:
%% 原始信号
T = 1;%设置时间长度T
BW = 150;% 带宽BW
k = BW/T;%斜率
h=figure();%使所有图在一张图中生成
dt_0 = 1/1200;
t_0 = 0:dt_0:T;% 生成原始时间
fs_0 = 1/dt_0;
N_0 = length(t_0);
% 信号幅度修正
p0_0 = t_0+2;
p0_max_0 = max(max(p0_0));
p_0 = p0_0./p0_max_0;
%% 抽样
dt = 1/400;
t = 0:dt:T;
fs = 1/dt;
% 信号幅度修正
p0 = t+2;
p0_max = max(max(p0));
p = p0./p0_max;
N = length(t);
% 频率
f = (0:N-1)*fs/N - fs/2;
%% 构造信号与傅里叶变换
for i = 1:9
f0 = 25+(i-1)*50;%初始频率f0
%初始信号
s_0 = cos(2*pi*(f0.*t_0+0.5*k*t_0.^2)).*p_0;
% 进行fft
F_0 = fftshift(fft(s_0,N_0));
F_0 = F_0./max(abs(F_0));
% 频率
f_0 = (0:N_0-1)*fs_0/N_0 - fs_0/2;
%采样信号
s = cos(2*pi*(f0.*t+0.5*k*t.^2)).*p;
% 进行fft
F = fftshift(fft(s)./ N );
F = F./max(abs(F));
% 画图
figure(h); hold on
subplot(9,2,2*(i-1)+1 );plot( f_0, abs(F_0) ); ylabel('幅度');grid on;
title( ['FC=',num2str(f0+BW/2)])
subplot(9,3,3*(i-1)+3 );plot( f, abs(F) ); ylabel('幅度');grid on;
if i == 1
title('采样后的频率');
end
end
下面是结果图:
可在h=figure()处加上set( h, ‘position’, [100,100,900,600] );使图像更好看。
h = figure; set( h, 'position', [100,100,900,600] );
参考代码:
https://blog.csdn.net/zhoubanlu4/article/details/106151183