先初始化各个参数

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取值范围的趋势几乎一致。

参考代码:

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

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

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

    T = 1;BW = 150;k = BW/T;h=figure();N_0 = length(t_0); 设置初始参数,带宽在书中给出,为150Hz,h=figure()是为了后面将所有的图在一张图 ...

  2. Python实现《合成孔径雷达成像——算法与实现》图4.4

    Python实现<合成孔径雷达成像--算法与实现>图4.4. import matplotlib.pyplot as plt import numpy as np import math ...

  3. Python实现《合成孔径雷达成像——算法与实现》图3.13

    Python实现<合成孔径雷达成像--算法与实现>图3.13. import matplotlib.pyplot as plt import numpy as np import math ...

  4. Python实现《合成孔径雷达成像——算法与实现》图2.8和2.9

    Python实现<合成孔径雷达成像--算法与实现>图2.8和2.9. import matplotlib.pyplot as plt import numpy as np import m ...

  5. 合成孔径雷达成像算法与实现(信号处理基础知识点)

    最近由于学业上需要,重新学习了<合成孔径雷达成像算法与实现>一书,其中第二章是信号处理基础,在此记录下学习过程. 一.信号处理基本概念 1.卷积与相关 卷积:  相关:    卷积从几何解 ...

  6. 合成孔径雷达成像算法与实现 笔记 | 第三章--线性调频信号的脉冲压缩

    笔记原文链接:https://mp.weixin.qq.com/s/NzhrVVsGW7NlTijKFt5z0Q ↑ \uparrow ↑ 打开上述链接即可阅读全文 本系列为<合成孔径雷达成像算 ...

  7. 《合成孔径雷达成像——算法与实现》之【0】仿真汇报

    - 主要是对<合成孔径雷达--算法与实现>这本书上的部分Figure.算法以及光盘数据处理进行了仿真,最后制成了一个PPT.以后将把所有作品一一贴出!

  8. 《合成孔径雷达成像——算法与实现》之【end】RADARSAT-1数据处理

    分别采用方式2.方式3的距离多普勒算法,Chirp Scaling算法,wK算法对RADARSAT-1数据进行成像,并提供源代码下载(代码编写不易,核心成像算法代码已被封装成保护文件). 1.方式2的 ...

  9. 《合成孔径雷达成像——算法与实现》之【1】仿真图2.2

    重点在于理解"由于图像扭曲或旋转带来的频域表现形式的变化". % SAR_Figure_2_2 % 2016.10.31 clear all;clc;close all;%% 参数 ...

最新文章

  1. qtablewidget 数据量大效率很低_让大牛带你走进大数据分析:R基础及应用的潮流尖端,享受RHadoop...
  2. ASP.NET MVC – 关于Action返回结果类型的事儿(上)
  3. Jenkins添加从节点相关配置
  4. RHEL 6.5 rpm包安装mplyer
  5. 【渝粤教育】广东开放大学 网络整合营销 形成性考核 (53)
  6. css 小知识点:inline/inline-block/line-height
  7. php 动态参数,php怎么实现动态传参数?
  8. C++中的STL和MFC
  9. 设计模式 代理模式(Proxy Pattern)
  10. 2022-2028全球气动测试探针行业调研及趋势分析报告
  11. 苏大强患的“老年痴呆”,这家初创公司想提前15年检测
  12. 深度强化学习算法 A3C (Actor-Critic Algorithm)
  13. 优动漫PAINT中的混合模式和效果体验
  14. EXCEL中文转英文首字母拼写
  15. 【Unity2D入门教程】简单制作一个弹珠游戏之制作场景①(开场,结束,板子,球)
  16. 如何防止QT程序未响应
  17. 尤雨溪:Vue3即将成为新的默认版本!
  18. python 环境配置
  19. python爬虫requests模块
  20. 如何给图片降噪?图片噪点模糊变清晰的方法分享

热门文章

  1. 计算机专业就业率就业薪资图表,10大热门专业“工资”大揭秘,软件工程最高,会计垫底?...
  2. jq获取多个相同name名的input框的value值
  3. 物联网技术 android,基于Android技术的物联网应用开发
  4. 八点钟学院:由“虎扑体育app”的这个效果,来谈谈UITableView编辑模式
  5. 汽车中的软件测试(一)
  6. netty框架及原理解析
  7. 在SpringBoot中整合使用Netty框架提供WebSocket服务
  8. matlab非线性数值解法,matlab 数值分析 非线性方程与方程组的数值解法
  9. 教你如何设置u盘启动安装系统
  10. 线性布局 - Android开发