visualization of 3D matrix: how do I swap the y and z axis?

20 次查看(过去 30 天)
The Matlab ordering for 3D matrices are: column (y) - row (x) - page (z).
I am using imagesc() to display slices of seismic data: imagesc( S(:,:,1) ); % first page
My first problem is this: how do I slice in another direction? imagesc( S(:,1,:) ); does not work :-(.
My next problem is that for seismic it is customary to have z axis downwards: column=z, row=x, page=y.
I have solved this by a "hack": when reading in the data from an ascii file I swap the y and z axes. The result is that imagesc( S(:,:,1) ); in reality is displaying the seismic for y=y1.
There must be some better way to do this?
Thanks in advance for any answers!

采纳的回答

Andrew Newell
Andrew Newell 2012-2-29
You can use permute to rearrange the order of the dimensions and axis to to place the origin in the upper left corner:
S = permute(S,[3 1 2]);
% Your plot commands
axis ij

更多回答(1 个)

Wayne King
Wayne King 2012-2-29
Hi Andreas, you are using imagesc() to display 3D data??
Are you sure you are not talking about surf() or something other display method? imagesc() does not work on a 3D matrix except for a truecolor image.
If you use surf(), you can reverse the Z-axis direction
k = 5;
n = 2^k-1;
[x,y,z] = sphere(n);
surf(x,y,z); set(gca,'ydir','reverse');

类别

Help CenterFile Exchange 中查找有关 Geographic Plots 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by