convert 3D to 2D?
Show older comments
Help me to convert 3d matrix (consider x-y-z plane) to x times 2d matrix (y-z). Then I want to write this output to a file as ...(x1y1z1), (x2y2z2),(x3y3z3) and so on; (xyz)=value of x-y-z position in matrix
5 Comments
Walter Roberson
on 19 Oct 2016
If you have position YourMatrix(J, K, L) where the three indices are not all the same, then where should that go into the output file?
Should the output order be YourMatrix(1, 1, :) then YourMatrix(1, 2, :) ... YourMatrix(1, end, :), YourMatrix(2, 1, :), YourMatrix(2, 2, :), ... and so on?
lafnath p
on 19 Oct 2016
Walter Roberson
on 19 Oct 2016
Should the output order be YourMatrix(1, :, 1) then YourMatrix(1, :, 2) ... YourMatrix(1, :, end), YourMatrix(2, :, 1), YourMatrix(2, :, 2), ... and so on?
Should the output order be YourMatrix(:, 1, 1) then YourMatrix(:, 1, 2) ... YourMatrix(:, end, 1), YourMatrix(:, 2, 1), YourMatrix(:, 2, 2), ... and so on?
Should the output order be YourMatrix(:, 1, 1) then YourMatrix(:, 2, 1) ... YourMatrix(:, end, 1), YourMatrix(:, 1, 2), YourMatrix(:, 2, 2), ... and so on?
Steven Lord
on 19 Oct 2016
To ask a more specific version of Walter's question:
A = reshape(1:24, [2 3 4])
If you were to write A to a file in the way you want to write your real 3-D array, what would the EXACT contents of the file be? Be specific: I want to see exactly how you'd arrange the numbers 1 through 24 in the file and I would like to see whatever else you add beyond just the numbers in A.
Answers (1)
Walter Roberson
on 20 Oct 2016
ps = size(g,2)*size(g,3)
fmt = [repmat('%g,', 1, ps-1), '%g\n'];
fprintf(fmt, permute(g, [2 3 1]));
Categories
Find more on Operating on Diagonal Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!