【问题标题】:Density plot in MatlabMatlab中的密度图
【发布时间】:2016-05-22 23:41:22
【问题描述】:

Matlab 与 Mathematica 的ListDensityPlot 的可比函数是什么?例如

ListDensityPlot[Table[Sin[x y/100], {x, -50, 50}, {y, -50, 50}], 
 DataRange -> {{-50, 50}, {-50, 50}}]

会产生

谢谢。

【问题讨论】:

  • 我怀疑没有一个(我不确定,所以我只是评论,我希望有人证明我错了)。但这并不奇怪:如果你在树林里扔一块石头,它有 90% 的机会会击中一个专门的 Mathematica 函数;)你总是可以使用类似 histogram2 的东西来生成密度数据,然后用一些插值。

标签: matlab wolfram-mathematica


【解决方案1】:

在矢量化计算与符号计算的意义上,Matlab 与 Mathematica 不同。

您可以通过为 x 和 y 定义空间样本网格来做您想做的事情,然后对您的函数进行相应的采样。

例如:

dx = 0.1;
dy = 0.1;
x = -50:dx:50;
y = -50:dy:50;
[xx, yy] = meshgrid(x,y);
imagesc(sin(xx.*yy/100));

【讨论】:

  • 我知道imagesc。但是我们需要精细的网格来生成平滑的图像。
  • @Sukan 如果我没记错的话,imshow 可以进行插值,这将使您的图像更平滑(以轻微扭曲数据为代价,但这是 Mathematica 无法避免的概念性问题要么)。
  • @Sukan 为了公平对待 Matlab,Mathematica 也需要一个精细的网格(通过选项 Mesh->All 可以看到),但 Matlab 数字不会像 Mathematica 那样重新采样/重新网格化他们的输入。如果imagesc 不起作用,那surface(xx,yy,sin(xx.*yy/100),'EdgeColor','interp'); shading('interp'); 呢?
  • 您的建议似乎有效。尽管如此,对于相同的网格尺寸,仍然无法匹配ListDensityPlot 的输出。谢谢。
  • 为记录 Mathematicas List-Plot 变种绘制给定数据,没有自适应采样。在示例中,它只有提供的 100x100 网格可以使用
猜你喜欢
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-17
  • 2014-01-27
  • 2018-01-26
  • 2018-01-13
  • 1970-01-01
相关资源
最近更新 更多