Команда Shading дает разные результаты в MATLAB и Octave - PullRequest
4 голосов
/ 12 февраля 2020

Команды shading faceted и shading interp создают разные цифры в MATLAB и Octave.

Рассмотрим этот код:

[X, Y] = meshgrid(0:2, 0:2);
Z = magic(3);

figure;
colormap('jet');

subplot(1, 3 ,1);
imagesc(Z);
axis xy
yticklabels({'0', '1', '2'})
yticks(1:3)
xticklabels({'0', '1', '2'})
xticks(1:3)
title('imagesc(Z)');

subplot(1,3,2);
surf(X, Y, Z);
shading faceted;
view([0,0,1]);
yticks(0:3)
xticks(0:3)
title('surf(X, Y, Z); shading faceted;');

subplot(1,3,3);
surf(X, Y, Z);
shading interp;
view([0,0,1]);
yticks(0:3)
xticks(0:3)
title('surf(X, Y, Z); shading interp;');

Это результат в MATLAB: enter image description here

И результат, сгенерированный Octave:

enter image description here

MATLAB генерирует правильную цифру. Что не так с этим Октавная фигура?

По какой причине мы получаем два разных результата? Это проблема с командой view?

EDIT (после сообщения об ошибке)

Это исправлено в Ocatve 6.1: https://hg.savannah.gnu.org/hgweb/octave/raw-file/11072ea6a16c/scripts/plot/appearance/view.m

1 Ответ

1 голос
/ 12 февраля 2020

Ваш код выглядит правильно. Я могу воспроизвести в Octave 4.4 и 5.2 на macOS.

Добавьте вызов xlabel('X Axis');, чтобы уточнить, что происходит.

Это похоже на ошибку в реализации Octave view. Похоже, оси X и Y меняются местами. Не могли бы вы сообщить об этом как об ошибке на трекере Octave в https://savannah.gnu.org/bugs/?group=octave?

...