【问题标题】:Matlab\Octave haven't the same result with contourfMatlab\Octave 与 contourf 的结果不同
【发布时间】:2014-10-21 14:08:20
【问题描述】:

我在八度音程中使用 contourf 时遇到问题。
如果我在 octave 和 matlab 中测试以下代码,结果完全不一样。 Matlab 的结果很好。

A1=[38    44    51    58    65    72    79    86    93   100
    38    44    51    58    65    72    79    86    93   100
    38    44    51    58    65    72    79    86    93   100
    38    44    51    58    65    72    79    86    93   100
    38    44    51    58    65    72    79    86    93   100
    38    44    51    58    65    72    79    86    93   100
    38    44    51    58    65    72    79    86    93   100
    38    44    51    58    65    72    79    86    93   100
    38    44    51    58    65    72    79    86    93   100
    38    44    51    58    65    72    79    86    93   100]

B1=[ 1     1     1     1     1     1     1     1     1     1
    12    12    12    12    12    12    12    12    12    12
    23    23    23    23    23    23    23    23    23    23
    34    34    34    34    34    34    34    34    34    34
    45    45    45    45    45    45    45    45    45    45
    56    56    56    56    56    56    56    56    56    56
    67    67    67    67    67    67    67    67    67    67
    78    78    78    78    78    78    78    78    78    78
    89    89    89    89    89    89    89    89    89    89
   100   100   100   100   100   100   100   100   100   100]

C1=[NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN
    NaN    687    585    865   1045   1283   2465   2661   3042    NaN
    NaN    356    390    426    473    519    574    627   1253    NaN
    NaN    330    334    330    377    423    455    502    583    NaN
    NaN    305    314    330    348    369    395    430    458    NaN
    NaN    NaN    299    306    323    345    366    389    420    NaN
    NaN    NaN    294    302    310    323    340    364    396    NaN
    NaN    NaN    NaN    295    301    314    326    345    371    NaN
    NaN    NaN    NaN    NaN    297    306    318    334    351    NaN
    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    345    NaN]

[c,h]=contourf(A1,B1,C1,[200,300,400,500,600])

有人可以解释为什么 octave 提供的结果与预期不同吗?

【问题讨论】:

  • 你对比contourf在matlab和octave中的函数描述了吗?也许它们应该以稍微不同的方式使用。
  • 好吧,在 Octave 中它返回一个错误:error: __contour__: subscript indices must be either positive integers less than 2^3 1 or logicals。这是因为你有一些NaN。你应该摆脱它们。
  • @am304 使用 octave 3.8.2 没有错误。你的版本是什么?
  • 最好 1) 在您的问题中包含 matlab 图像,以及 2) 提供可以轻松复制/粘贴的完整工作代码。例如,A1= 之后不应有换行符。
  • 问题已编辑。现在可以复制/粘贴代码

标签: matlab octave contourf


【解决方案1】:

这是known bug。 使用 octave 3.8.2 生成的图像是

如评论 #2 中所述,解决方法是将 NaN 更改为 -inf,以关闭轮廓。

确实,与

C1(isnan(C1)) = -inf;
[c,h]=contourf(A1,B1,C1,[200,300,400,500,600])

情节看起来更好。

【讨论】:

  • 太好了,就是这样,我不知道这个错误,但答案是一个好问题。谢谢
猜你喜欢
  • 1970-01-01
  • 2012-06-02
  • 1970-01-01
  • 2020-05-28
  • 2017-11-09
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多