How do I combine four 3x3 matrices into a 6x6 matrix?

Suppose I have the matrices
A=[1 1 1
1 1 1
1 1 1]
B=[2 2 2
2 2 2
2 2 2]
C=[3 3 3
3 3 3
3 3 3]
D=[4 4 4;
4 4 4;
4 4 4]
I need the combined matrix to be,
New=[ 1 1 1 2 2 2
1 1 1 2 2 2
1 1 1 2 2 2
3 3 3 4 4 4
3 3 3 4 4 4
3 3 3 4 4 4]
I could write a loop and combine it as such but I would likle to know if there are any functions that could do the same!!

 Accepted Answer

If it's really only 4 matrixes, then I would just write
New = [[A,B];[C,D]];
If the code needs to be expanded for a larger number of matrixes then it may be convenient to use a loop, but you should specify how those matrixes must be arranged to form the new one.

4 Comments

The simpler MATLAB approach:
New = [A,B;C,D];
"If the code needs to be expanded for a larger number of matrixes then it may be convenient to use a loop"
The MATLAB approach would be to use CELL2MAT or a comma-separated list with CAT or [].
@Stephen thanks for your comment. When I suggested a loop I thought of something like concatenating a large number of matrixes. If that was the case, a loop might still be needed to create the cell array to pass to cell2mat I guess. But please let me know if I am missing something.
"When I suggested a loop I thought of something like concatenating a large number of matrixes"
Using a loop to concatenate (and enlarge) an array on each loop iteration is very inefficient. Much better approaches would be to use indexing to allocate the data to a preallocated array, or use a comma-separated list with CAT or [].

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products

Release

R2020a

Tags

Community Treasure Hunt

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

Start Hunting!