合成孔径雷达成像——算法与实现图【2.8】仿真

    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

下面是结果图:
合成孔径雷达成像——算法与实现图【2.8】仿真_第1张图片
可在h=figure()处加上set( h, ‘position’, [100,100,900,600] );使图像更好看。

h = figure; set( h, 'position', [100,100,900,600] );

合成孔径雷达成像——算法与实现图【2.8】仿真_第2张图片
参考代码:

https://blog.csdn.net/zhoubanlu4/article/details/106151183

你可能感兴趣的:(matlab,仿真,合成孔径雷达)