2014-10-21 4 views
-1

У меня проблема с использованием контура в октаве.
Если я тестирую следующий код в октаве и матлабе, результат не будет одинаковым. Результат с Matlab хороший.У Matlab Octave нет одинакового результата с контуром

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]) 

Может кто-нибудь объяснить, почему октава дает другой результат, чем ожидалось?

+0

ли вы сравниваете описания функций из 'contourf' в MATLAB и октава? Возможно, их следует использовать несколько иначе. –

+1

Ну, в Octave он возвращает ошибку: 'error: __contour__: индексы индекса должны быть либо целыми положительными числами менее 2^3 1, либо логическими'. Это потому, что у вас есть «NaN». Вы должны избавиться от них. – am304

+0

@ am304 С октавой 3.8.2 ошибок нет. Какая у вас версия? – ederag

ответ

0

Это known bug. С октаву 3.8.2 полученное изображение является wrong result

Как объяснено в замечании № 2, обходной путь, чтобы изменить NaN к -inf для того, чтобы закрыть контуры.

Действительно, с

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

сюжет выглядит лучше.

enter image description here

+0

Замечательно, вот и все, я не знал ошибку, но ответ хороший. благодаря – Didou139