Matlab非线性二维图形图

Posted

技术标签:

【中文标题】Matlab非线性二维图形图【英文标题】:Matlab nonlinear 2D figure plot 【发布时间】:2017-12-22 21:24:04 【问题描述】:

假设我有一组 x 范围为 0 到 5 的数据(均匀分布,比如间距为 0.2),在这个总 x 范围内,我实际上在 y 值方面有一些很好的特征,比如从 0到 1 个范围。除此之外,特征很粗糙。

所以现在我想要一个数字更像是放大到 0 到 1 的范围,但仍然绘制出总的 x 范围。最好的情况当然是不丢失任何数据点。

目前我确实有一个潜在的解决方案,我从 1 到 5 范围内选取稀疏点(间距为 1 而不是 0.2)并首先均匀地绘制这些数据点。然后用正确的对应x值标记如下(这些只是我在这里用于解释的一些随机数,虽然该图没有0到1范围之间的精细特征):

x=[0 0.2 0.4 0.6 0.8 1 2 3 4 5];
x1=0:9;
y=[0.1 0.2 0.3 0.4 0.5 1 2 3 4 5];

figure(1)
plot(x1,y,'-o')
set(gca,'xticklabel',x)

Figure plot

但这显然会丢失 1 到 5 范围内的一些信息。

有没有更好的方法,我仍然可以用原始数据点绘制从 0 到 5 的整个范围,但详细显示 0 到 1 的范围?

谢谢!

【问题讨论】:

【参考方案1】:

不确定我是否理解。这个呢?

x=[0:.2:1 2 3 4 5];

y=[0.1 0.2 0.3 0.4 0.5 1 2 3 4 5];

figure(1)
plot(x,y,'-o')

【讨论】:

感谢您的评论,但不是我想要的。 为什么?有什么问题? 看我贴的剧情,你可能对我的预期有更好的理解。【参考方案2】:

我会说在 x 轴上具有非均匀间隔的唯一正确方法是使用对数刻度。试试

semilogx(x,y,'-o')

【讨论】:

嗯,这只是一种可能的情况。例如,如果精细特征位于中间区域的某个位置,我认为对数比例不会有帮助。 同意,但是对于大多数真实世界场景,您的数据跨越几个数量级,对数图就是您想要的。如果存在“中间区域”,您可能应该使用几个图,就像可视光谱如何显示为电磁光谱的一部分 (en.wikipedia.org/wiki/Electromagnetic_spectrum#/media/…)。其他任何内容都会让读者感到困惑。

以上是关于Matlab非线性二维图形图的主要内容,如果未能解决你的问题,请参考以下文章

推荐一本matlab入门教材

MATLAB画图工具中坐标外面的底色是灰的,该如修改?

三角形内部线性插值方法

Matlab算法粒子群算法求解二维线性优化问题(附MATLAB代码)

MATLAB绘图功能

在不修改数据的情况下创建非线性 MATLAB 颜色图