Reshape 1D to 3D array

25 Ansichten (letzte 30 Tage)
John Cruce
John Cruce am 5 Aug. 2023
Kommentiert: John Cruce am 6 Aug. 2023
I have a 1D array (365x1) that I need to reshape into a 3D array (365x1x1) to divide into 3D array (365x721x1440). What's the most efficient means of accomplishing this task?
  1 Kommentar
Torsten
Torsten am 5 Aug. 2023
I don't understand your task.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

the cyclist
the cyclist am 5 Aug. 2023
MATLAB arrays implicitly have length-1 dimensions after the defined dimensions. For example
% Define 365x1 array
M = rand(365,1);
% Length in 3rd dimension
size(M,3)
ans = 1
% Length in 31st dimension
size(M,31)
ans = 1
Regarding how that ends up being (365x721x1440), you'll need to provide more detail.
  4 Kommentare
DGM
DGM am 6 Aug. 2023
Bearbeitet: DGM am 6 Aug. 2023
I think we're getting confused by the suggestion of "reshaping". The way it appears to me, reshaping A is not necessary. It appears as this is simply a misunderstanding how to make array sizes compatible for arithmetic operations. Consider the example:
A = (1:4).' % a column vector
A = 4×1
1 2 3 4
B = 2*ones(4,4,2) % a 3D array with the same page height
B =
B(:,:,1) = 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 B(:,:,2) = 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
% you could expand A to have the same size as B
% A = repmat(A,[1 4 2]);
% but it's not necessary
A./B
ans =
ans(:,:,1) = 0.5000 0.5000 0.5000 0.5000 1.0000 1.0000 1.0000 1.0000 1.5000 1.5000 1.5000 1.5000 2.0000 2.0000 2.0000 2.0000 ans(:,:,2) = 0.5000 0.5000 0.5000 0.5000 1.0000 1.0000 1.0000 1.0000 1.5000 1.5000 1.5000 1.5000 2.0000 2.0000 2.0000 2.0000
So long as the arrays are compatibly-sized along their non-singleton dimensions, you should be able to perform elementwise arithmetic without explicitly expansion. If you were running a version older than R2016b, the recommended method would be to use bsxfun() instead of repmat().
Of course, I might be interpreting the question wrong.
John Cruce
John Cruce am 6 Aug. 2023
You're excatly right. I was definitely overcomplicating it.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Produkte


Version

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by