clear all;close all
clc;
K = 32; L = 16;
M = K*L; N = 256;
%% 斑点(Speckle)分量部分%%%%%%%%%%%%%%%%%%%%
fm = -M/2 : 1: M/2-1; v_fm = 40;
%产生均值为0,标准差为1的M行N列的正态分布数据
x_mn = normrnd(0,1,[M N]) + j*normrnd(0,1,[M N]);
X_mn = fft2(x_mn); %进行二维FFT变换
%% Fig.1 绘制二维FFT变换后的频谱图 %%%%%%%
% figure;mesh(abs(x_mn))
% title('Speckle分量:构造的m*n随机序列x_mn的模值图')
%%
PSD_m = exp(-1.3863*fm.^2/v_fm^2); %构造斑点分量的功率谱PSD_m
PSD_m = PSD_m';
PSD_mn = zeros(M,N);
for i = 1:N
PSD_mn(:,i) = PSD_m; %将m行的功率谱扩展至mn维
end
%% Fig.2 绘制功率谱PSD_m %%%%%%
% figure;mesh(PSD_mn)
% title('Speckle分量:m*n维功率谱PSD_mn')
%%
Y_mn = X_mn.*sqrt(PSD_mn);
Speckle_mn = ifft2(Y_mn);
% %% Fig.3 绘制相乘后的功率谱Y_mn %%%%%%%%
figure;mesh(abs(Y_mn))
title('Speckle分量:频谱Y_mn的模值')
% %% Fig.4 绘制复合频谱对应的序列Speckle_mn %%%%
figure;mesh(abs(Speckle_mn))
title('斑点分量模值abs(Speckle_mn)')
%% 结构(Texture)分量部分 %%%%%%%%%%%
R0 = 4.2; T0 = 4; %距离分辨率R0,时间分辨率T0
%%
r = 0 :32/K :32-32/K; %距离维取值范围r
t = 0 :256/N:256-256/N; %时间维取值范围t
%% 复合K分布的形状参数v 和尺度参数 b设定 %%%%%%
v = [0.5 0.45 1.07 1.47 2.09 2.5 3.12 3.50 4.15 4.50
5.04 4.50 4.15 3.50 3.12 2.5 2.09 1.47 1.07 0.45];
% v = [0.5 1 1.3 1.98 2.65 3.42 4.05 5.12 5.67 6.34 6.89 7.25 7.79 8.12 8.75 9.12 9.75 10.12];
b = [1 2 3 4 5 6 7 8 9 10 9 8 7 6 5 4 3 2 1.5 1];
%%
Texture_mn = []; Gaminv_mn = [];
ACF_Gauss = [];XFFT_mn = [];xifft_mn = [];
for li = 1:L
x_kn = normrnd(0,1,[K N]); %构造k*n的随机序列x_kn
for i = 1:K
for u = 1:N
%得到结构分量的Gauss分布的自相关函数K*N
ACF_Gauss_kn(i,u) = exp(-(1+0.15*v(li)^-0.7)*sqrt((r(i)/R0)^2+(t(u)/T0)^2));
end
end
% 自相关函数ACF_Gauss_kn对应的功率谱图PSD_Gauss_kn
PSD_Gauss_kn = fftshift(fft2(ACF_Gauss_kn));
X_kn = fftshift(fft2(x_kn)); %随机序列的频谱图X_kn
XFFT_kn = X_kn.*sqrt(PSD_Gauss_kn); %得到复合功率谱XFFT_kn
%%
xifft_kn = ifft2(XFFT_kn); %对复合频谱求IFFT得到序列xifft_kn
xifft_abs = abs(xifft_kn);
xifft_angle = angle(xifft_kn);
% XFFT_abs = abs(XFFT_kn);
% XFFT_angle = angle(XFFT_kn);
%%
%%%% Fig.5 绘制序列xifft_kn的模值图xifft_abs %%%
%figure;mesh(xifft_abs)
CDF_kn = raylcdf(sqrt(xifft_abs),sqrt(2)*b(li)); %幅度服从瑞丽分布
%figure;mesh(CDF_kn)
Gaminv_kn = gaminv(CDF_kn,v(li),b(li));
Texture_kn = Gaminv_kn.*exp(j*xifft_angle);
%figure;mesh(abs(Texture_kn))
Gaminv_mn = [Gaminv_mn;Gaminv_kn];
Texture_mn = [Texture_mn;Texture_kn];
ACF_Gauss = [ACF_Gauss;ACF_Gauss_kn];
XFFT_mn = [XFFT_mn;XFFT_kn];xifft_mn = [xifft_mn;xifft_kn];
end
figure;mesh(abs(Texture_mn))
title('结构分量模值')
Texture_mn_2fft = fftshift(fft2(Texture_mn));
figure;mesh(abs(Texture_mn_2fft));
title('结构分量的2div频谱图')
K_fenbu_mn = Texture_mn.*Speckle_mn;
figure;mesh(abs(K_fenbu_mn));
title('K分布序列K_fenbu_mn的模值')
KFFT_fenbu_mn = fftshift(fft2(K_fenbu_mn));
figure;mesh(abs(KFFT_fenbu_mn));
title('K分布的2-dim频谱')
评论0