transform an empty matrix '0x0 double' into a matrix '0x2 double'
Mostrar comentarios más antiguos
Hello! How can I transform an empty matrix '0x0 double' into a matrix '0x2 double' as in the figure?

For example in my case, I have a cell 'test_p'. Rows 3,4,5 (0x0 double) should become like rows 1 and 2 (0x2 double).
test_p = importdata("test_p.mat");
data_0x2_double = test_p{1, 1};
data_0x0_double = test_p{3, 1};
Respuesta aceptada
Más respuestas (2)
Since a 0-by-0 array and a 0-by-2 array have the same number of elements you can reshape one into the other.
A = zeros(0, 0)
B = reshape(A, [0 2])
C = reshape(B, 0, 0)
whos A B C
3 comentarios
Bruno Luong
el 20 de Jul. de 2023
Editada: Bruno Luong
el 20 de Jul. de 2023
Is there any difference (internally) between assigning
- a new variable reshaped from an existing empty variable,
- create a new empty variable with desired size?
As they don't have any content and their data pointer is NULL why bother to use reshape?
Your code below made an assumption about the user's data, one that's likely valid (and is valid WRT the original question) but in some cases may not be.
A = zeros(0, 0, 'single');
B = reshape(A, [0 2]);
C = zeros(0, 2);
whos A B C
B and C are different classes. You could modify the call that creates C to always create it 'like' A or with the same type as A, but reshape will not change the type and is shorter than either of the calls that create C1 or C2 below.
C1 = zeros(0, 2, 'like', A)
C2 = zeros(0, 2, class(A))
Bruno Luong
el 20 de Jul. de 2023
OK in short you want to preserve the class of the data with reshape.
To create an empty double with a specified size,
data_0x2_double = zeros(0,2)
Or,
data_0x2_double = double.empty(0,2)
Categorías
Más información sobre Matrices and Arrays en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!