Combining multiple matrices into a single vector

15 Ansichten (letzte 30 Tage)
Scott Banks
Scott Banks am 29 Sep. 2023
Bearbeitet: Voss am 29 Sep. 2023
Hi there,
have some matrices that I would like to combine into a single vector. For example:
T1 = [2 3;
4 2]
T2 = [1 7;
9 4]
T3 = [5 5;
1 4]
I do not want to add them together like it does here:
T = [T1 T2 T3]
Rather I want to store them is such a way that I can index them in a loop
How can I accomplish this?
Many thanks
  2 Kommentare
Katy
Katy am 29 Sep. 2023
Hi Scott-
How do you want the final matrix to look? Can you provide an example of the desired final matrix?
Is it a single row? Or a combined matrix?
Thanks,
Katy
Stephen23
Stephen23 am 29 Sep. 2023

“How can I accomplish this?“

Either use a cell array or a 3D array.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Star Strider
Star Strider am 29 Sep. 2023
Bearbeitet: Star Strider am 29 Sep. 2023
A single vector is not possible, however a 3D array is with the cat function —
T1 = [2 3;
4 2];
T2 = [1 7;
9 4];
T3 = [5 5;
1 4];
T = cat(3, T1, T2, T3)
T =
T(:,:,1) = 2 3 4 2 T(:,:,2) = 1 7 9 4 T(:,:,3) = 5 5 1 4
T = reshape(T, 2, []) % Another Option
T = 2×6
2 3 1 7 5 5 4 2 9 4 1 4
EDIT — (29 Sep 2023 at 11:56)
Added the reshape option.
.

Weitere Antworten (1)

Katy
Katy am 29 Sep. 2023
Bearbeitet: Katy am 29 Sep. 2023
If I am understanding the question correctly, here's one way to store them as a single vector (T_vec).
It requires storing the inputs in a cell array rather than separate matrices.
Let me know if this solves your question!
T{1,1} = T1;
T{2,1} = T2;
T{3,1} = T3;
T_vec = [];
for i = 1:length(T)
temp = T{i,1};
sz_temp = size(temp);
rows = sz_temp(1,1);
col = sz_temp(1,2);
for j = 1:rows
for p = 1:col
T_vec = [T_vec temp(j, p)];
end
end
end
  1 Kommentar
Voss
Voss am 29 Sep. 2023
Bearbeitet: Voss am 29 Sep. 2023
@Katy: That can be simplified a bit:
T1 = [2 3;
4 2];
T2 = [1 7;
9 4];
T3 = [5 5;
1 4];
T = {T1;T2;T3};
for ii = 1:numel(T)
T{ii} = reshape(T{ii}.',1,[]);
end
T_vec = [T{:}]
T_vec = 1×12
2 3 4 2 1 7 9 4 5 5 1 4
Or, to simplify even further:
T = {T1;T2;T3};
T_vec = reshape(vertcat(T{:}).',1,[])
T_vec = 1×12
2 3 4 2 1 7 9 4 5 5 1 4

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by