Concatenate matrix with for loop

Hi guys,
I got 3 matrices that I want to concatenate into one. Each matrix is 4x200. What I want to do is to create a matrix that is like matrix c:
a =
8 1 6 5
3 5 7 6
4 9 2 7
b =
5 4 1 3
7 3 2 8
8 9 6 6
c = [a(:,1) b(:,1);a(:,2) b(:,2);a(:,3) b(:,3);a(:,4) b(:,4)]
c =
8 5
3 7
4 8
1 4
5 3
9 9
6 1
7 2
2 6
5 3
6 8
7 6
I want to use a for loop but I couldn't get it to work. Your help will be appreciated. Thank you!

3 个评论

I have tried:
t = 0;
g = 0;
for i = 1:size(a,2)
for j = 1:size(a,1)
c(t+1,g+1) = [a(j,i) b(j,i)];
t = t+1;
end
t = 0;
g = g+1;
end
g = 0;
But the error is dimension mismatch
I just thought it's the easiest way. If there is other ways, I am happy to try out as well. Thanks.

请先登录,再进行评论。

 采纳的回答

Try this:
c = [a(:) b(:)];

4 个评论

Thanks! That's even easier.
As always, my pleasure!
Probably the easiest way is to create ‘v’ as a matrix, then concatenate it with the others:
v = repmat((1:size(a,1))', 1, size(a,2));
c = [v(:) a(:) b(:)];
Note the transpose operator ('). This creates ‘(1:size(a,1))’ as a column vector, necessary for the correct matrix creation.
This version of ‘v’ should work with any matrix ‘a’, since it is defined by the size dimensions of ‘a’.
Great! that works well! Thank you
As always, my pleasure!

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by