在 X-Z 平面上显示图像(而不是默认的 X-Y)

Display an image on the X-Z plane (instead of the default X-Y)

我可以使用 imagesc 在 X-Y 平面上绘制图像,但现在我想将它放在 X-Z 平面上以供进一步使用。有什么办法吗?谢谢!

我会使用 surface 而不是 imagesc:

INPUT = [3,4,5
         4,5,6];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(); 
ZZ = padarray(INPUT,[1 1],0,'post'); % See note #2
[XX,YY] = meshgrid((1:size(INPUT,2)+1)-0.5,(1:size(INPUT,1)+1)-0.5);
% imagesc
subplot(3,1,1); imagesc(INPUT); xlim([0 4]); ylim([0.5 2.5]);
view([-50 50]); xlabel('x'); ylabel('y'); zlabel('z'); grid on;
title('imagesc');
% Normal (X-Y):
subplot(3,1,2); surface(XX,YY,0*XX,ZZ,'EdgeColor','none','FaceColor','flat'); 
view([-50 50]); xlabel('x'); ylabel('y'); zlabel('z'); axis ij; box on; grid on;
title('X-Y surface'); caxis([min(INPUT(:)),max(INPUT(:))]);
% Rotated (X-Z):
subplot(3,1,3); surface(XX,0*ZZ,YY,ZZ,'EdgeColor','none','FaceColor','flat');
view([-50 50]); xlabel('x'); ylabel('y'); zlabel('z'); axis ij; box on; grid on;
title('X-Z surface'); caxis([min(INPUT(:)),max(INPUT(:))]);

几点说明:

  1. 您可能需要 flipudfliplr 2nd surface 图中的一些输入(取决于您如何定义Y -> Z 过渡)。
  2. 在表示方面输出是相同的,但是,如果您尝试比较节点的值,您将不会在 X-Y 之间得到相同的结果和 imagesc 输出。这样做的原因是表面是使用顶点定义的,而 Image 对象是使用每个正方形中心的值定义的。

输出: