你的二维仿真数据真的错了吗?MATLAB绘图小技巧之caxis

说来也是件奇事,本人在MATLAB仿真时使用imagesc函数绘制二维颜色图的时候,只因一行代码,用同样的数据绘制了完全不一样的图——本来以为仿真错了,苦思问题出在何处,谁知随手一敲,竟是峰回路转,实在难得。欲知详情,且听细细道来。

上图是用压缩感知算法获得的雷达距离-角度谱数据,接下来转换为dB并用imagesc函数成像:

figure
colormap(jet)
imagesc(A_ax,R_ax,10*log10(abs(RAM_cs)./max(abs(RAM_cs(:))))); 
xlabel('A/°')
ylabel('R/m')

colormap(jet) 是 MATLAB 中用于设置当前图形窗口的颜色图(colormap)的一种命令,jet 是 MATLAB 提供的一种预定义颜色图,它通常由从深蓝色到浅蓝色,再到绿色、黄色和红色的渐变色构成。使用 colormap(jet) 可以将当前图形的颜色图设置为 jet,使得数据值按照这种颜色渐变显示。这段代码的成像结果如下:

目标初始位置在(50m, -50°) (100m, 20°),看到这张图,是不是觉得已经失败了?本人于是修改代码数小时,后来根据AI的建议,随手加上一段代码:

clim = get(gca,'clim');% 获取颜色映射的范围
caxis([clim(1)/2 0])% 调整颜色映射的范围为原来的一半,颜色映射的方式很影响最后的成图质量

clim的范围是[-135.8295043820791,0],现调整至原来的一半,图像变成了:

目标居然凸显出来了,有戏!继续缩小范围:

caxis([-40 0])

图像如下:

再进一步缩小:

caxis([-20 0])

图像如下:

两个目标完全凸显出来了,可见这个算法不是错误的,只是效果有些差而已。这样子的原理是什么?原来caxis函数固定颜色映射为[-20 0],即:

  • 数据值小于 -20 的部分会显示为颜色图中代表 -20 的颜色(深蓝色)。
  • 数据值大于 0 的部分会显示为颜色图中代表 0 的颜色(红色)。
  • 数据值在 [-20, 0] 范围内的部分会根据 jet 颜色图线性映射到相应的颜色。

这种方法当然不能乱用,尤其是在对比几种算法好坏的时候,会让人产生某种算法怎么看起来更好的错觉;噪声更是直接消失了,这下连估计噪声的影响都省了(笑)。倒是可以用来判断算法是否有问题;同时同学们在写课程实验报告的时候,未必不能用上这个技巧画一张好看的图啊~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值