Matlab\Octave haven';与contourf的结果不同

Matlab\Octave haven';与contourf的结果不同,matlab,octave,contourf,Matlab,Octave,Contourf,我在八度音阶中使用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

我在八度音阶中使用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])
有人能解释为什么八度音阶的结果与预期的不同吗?

这是一个很好的解释。 对于倍频程3.8.2,生成的图像是

如注释2所述,解决方法是将
NaN
更改为
-inf
,以关闭轮廓

事实上,与

C1(isnan(C1)) = -inf;
[c,h]=contourf(A1,B1,C1,[200,300,400,500,600])
情节看起来更好


您是否比较了matlab和octave中
contourf
的功能描述?也许它们应该以稍微不同的方式使用。在倍频程中,它会返回一个错误:
error:\uu轮廓\uuu:下标索引必须是小于2^3 1的正整数或逻辑值。这是因为你有一些
NaN
。您应该去掉它们。@am304和octave 3.8.2没有错误。你的版本是什么?最好1)在你的问题中包含matlab图像,2)提供一个可以轻松复制/粘贴的完整工作代码。例如,在
A1=
之后应该没有换行符。代码现在可以被复制/粘贴到onderful,就是这样,我不知道这个bug,但答案是好的。谢谢