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

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!

 Accepted Answer

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

More Answers (1)

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');

1 Comment

Hi Wayne. Sorry for a poorly explained question. I have improved my question text.

Sign in to comment.

Categories

Find more on Seismology in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!