200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 合成孔径雷达成像——算法与实现图【2.11】与【2.12】仿真——不同β值下的kaiser窗

合成孔径雷达成像——算法与实现图【2.11】与【2.12】仿真——不同β值下的kaiser窗

时间:2019-02-06 19:00:06

相关推荐

合成孔径雷达成像——算法与实现图【2.11】与【2.12】仿真——不同β值下的kaiser窗

先初始化各个参数

A = figure();N = 250;len = {};%用来储存标签pslr = [];%用来储存各个pslr值wide_3dB = [];%用来储存各个3dB带宽值

其中,{}与[]的区别是:

[]用来储存矩阵和向量,每一个[]是一个矩阵或一个向量,{}用来储存cell型数组等,比如字符、矩阵等。

若用[],则最后在输入标签时,会只有一个标签,因为只有一个矩阵,若用{},则其中会有多个字符,可以正常显示标签。

for i = 0:1:6idx=num2str(i);figure(A);hold on;z = kaiser(N,i);plot(kaiser(N,i),'LineWidth',1);xlim([-10 260]);

构造kaiser窗,idx为转换为字符串形式的数字,为了输出标签时比较简便。

can = fft( z, 100*N ); can = abs(can);can = 20.*log10( can./max(can) );can = fftshift( can );can1 = fft( z, 100*N );can1 = abs((can1).^2);can1 = 20.*log10( can1./max(can1) );can1 = fftshift( can1 );

进行傅里叶变换,转换成用分贝形式表示。can1为功率,即使用平方,用来获得峰值旁瓣功率。

len = [len,['β=',idx]];pslr = [pslr,getpslr(can)];[t,t_r_location,t_l_location] = wide(can1);wide_3dB = [wide_3dB,t];

得到数据标签、pslr值、以及3dB宽度值。

figure(2); subplot(1,2,1);plot( 0:6,( wide_3dB./wide_3dB(1) - 1 ));xlabel('kaiser窗的β'); ylabel('展宽比'); title('3dB宽度展宽比')grid on

绘制3dB宽度图像,其中第一个值为最小值,除最小值再减一可进行对其归一化。这里的单位为dB,若需要准确宽度需要乘一个窗长度,即时间T。

figure(2); subplot(1,2,2);plot( 0:6, pslr );xlabel('kaiser窗的β'); ylabel('PSLR,dB'); title('峰值旁瓣比(PSLR)')grid on

绘制峰值旁瓣比,这里pslr是小于1的值,所以不需要归一化。

figure(A);hold on;plot(kaiser(N,2.5),'LineWidth',2,'color','red');xlim([-10 260]);len = [len,['β=2.5']];legend(len');xlabel('kaiser窗的β'); title('不同β值的kaiser窗');

绘制一般使用的最佳β值2.5的kaiser窗,将所有的kaiser窗绘制在一起。

function [t,t_r_location,t_l_location] = wide(a)[m,max_location] = max(a);[r,t_r_location] = min(abs(a(max_location:end)+3));[l,t_l_location] = min(abs(a(1:max_location)+3));t_r_location = t_r_location + max_location - 1;t = t_r_location - t_l_location;end

这里构造计算3dB宽度的函数,首先得到a中的最大值的位置,然后计算左侧最接近3dB宽度的位置,再计算右侧最接近3dB宽度的位置,右侧位置需要加上最大值位置减1才可以得到相对整个矩阵的位置。最后右侧位置减左侧位置即为3dB宽度。

这里输入的a矩阵需要是归一化后的用dB来表示的值。

function[k] = getpslr(a)p = findpeaks(a);p = sort(p,'descend');k = p(2);end

构造计算峰值旁瓣比的函数。先找出所有的峰值点,然后降序排序,选出第二个值,这里因为已经归一化,所以不需要除去主瓣最大值,因为主瓣最大值即为1。

完整代码如下:

A = figure();N = 250;len = {};pslr = [];wide_3dB = [];for i = 0:1:30idx=num2str(i);figure(A);hold on;z = kaiser(N,i);plot(kaiser(N,i),'LineWidth',1);xlim([-10 260]);can = fft( z, 100*N ); can = abs(can);can = 20.*log10( can./max(can) );can = fftshift( can );len = [len,['β=',idx]];pslr = [pslr,getpslr(can)];can1 = fft( z, 100*N );can1 = abs((can1).^2);can1 = 20.*log10( can1./max(can1) );can1 = fftshift( can1 );[t,t_r_location,t_l_location] = wide(can1);wide_3dB = [wide_3dB,t];endfigure(A);hold on;plot(kaiser(N,2.5),'LineWidth',2,'color','red');xlim([-10 260]);len = [len,['β=2.5']];legend(len');xlabel('kaiser窗的β'); title('不同β值的kaiser窗');% 画3dB宽度展宽比q = wide_3dB./wide_3dB(1)-1;figure(2); subplot(1,2,1);plot( 0:30,100*q);xlabel('kaiser窗的β'); ylabel('展宽比'); title('3dB宽度展宽比')grid on% 画峰值旁瓣比figure(2); subplot(1,2,2);plot( 0:30, pslr );xlabel('kaiser窗的β'); ylabel('PSLR,dB'); title('峰值旁瓣比(PSLR)')grid onfunction [t,t_r_location,t_l_location] = wide(a)[m,max_location] = max(a);[r,t_r_location] = min(abs(a(max_location:end)+3));[l,t_l_location] = min(abs(a(1:max_location)+3));t_r_location = t_r_location + max_location - 1;t = t_r_location - t_l_location;endfunction[k] = getpslr(a)p = findpeaks(a);p = sort(p,'descend');k = p(2);end

结果图如下:

图2.11

图2.12

乘上时间宽度T后的图2.12

与书中图一致。

将β的取值延展到1到30后,曲线更加平滑且趋势与1到6取值范围的趋势几乎一致。

参考代码:

/zhoubanlu4/article/details/106535278

合成孔径雷达成像——算法与实现图【2.11】与【2.12】仿真——不同β值下的kaiser窗 以及3dB宽度和峰值旁瓣比

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。