MATLAB Combining 2 two-dimensional cell arrays in MATLAB

AI Thread Summary
To combine two 51x1 cell arrays in MATLAB, each containing matrices of different sizes, a 'for' loop can be utilized. The user needs to iterate through each cell and concatenate the matrices from both cells into a new cell array. The resulting cell should maintain the 51x1 dimension, with each row containing an 8x1 matrix formed by combining the first 5 values from the n_cbc cell and the next 3 from the n_load cell. The suggested code snippet successfully achieves this by using the syntax: for i = 1:51, [nodes{i}] = [n_cbc{i}; n_load{i}]; end. This method effectively resolves the user's issue of ending up with a 51x2 cell instead of the desired single column format.
chendry2001
Messages
7
Reaction score
0
Hi

I'm quite new to MATLAB and I'm stuck on a problem which I think is probably relatively simple. Any help much appreciated!

Right, I have 2 cells, both of dimension 51x1 called n_cbc and n_load. Each of the 51 rows in the n_cbc cell contains a 5x1 matrix. Each of the 51 rows in the n_load cell contains a 3x1 matrix.

What I want to do is create a new 3rd cell that contains the data from these 2 cells. It should also be of dimension 51x1 and each row should now have a 8x1 matrix (the first 5 values from n_cbc and the next 3 values from n_load).

I always end up with a 51x2 cell, but I want all values in the one column.

Hope that made sense. Any ideas?

Thanks!
 
Physics news on Phys.org
chendry2001 said:
Hi

I'm quite new to MATLAB and I'm stuck on a problem which I think is probably relatively simple. Any help much appreciated!

Right, I have 2 cells, both of dimension 51x1 called n_cbc and n_load. Each of the 51 rows in the n_cbc cell contains a 5x1 matrix. Each of the 51 rows in the n_load cell contains a 3x1 matrix.

What I want to do is create a new 3rd cell that contains the data from these 2 cells. It should also be of dimension 51x1 and each row should now have a 8x1 matrix (the first 5 values from n_cbc and the next 3 values from n_load).

I always end up with a 51x2 cell, but I want all values in the one column.

Hope that made sense. Any ideas?

Thanks!

I'd suggest using a 'for' loop (you probably want to do this in an m-file). In it, you'd iterate 51 times and within each iteration, you'd concatenate the two vectors (e.g. c = [a, b];)

For loop:
http://www.mathworks.com/access/helpdesk/help/techdoc/ref/for.html

M-files (in case you didn't know):
http://www.mathworks.com/access/helpdesk/help/techdoc/learn_matlab/f4-2525.html#f4-2543
 
Last edited by a moderator:
ok, thanks. it worked using this

for i = 1:51
[nodes{i}] = [n_cbc{i};n_load{i}];
end
 

Similar threads

Replies
32
Views
4K
Replies
18
Views
6K
Replies
1
Views
3K
Replies
10
Views
3K
Replies
1
Views
13K
Back
Top