Combining Data from different Cells in a cell array

5 次查看(过去 30 天)
So I've been hunting through the answer community, and I have yet to find what I'm looking for. What I'm attempting to do is combine 2 cell arrays so that the cells actually merge together, without using a for loop. What I have are two large cell arrays, one that contains the x coordinates and another that contains the y coordinates. I would like to put them together so that each cell contains both the x and y in two serperate columns.
For example
xcoordinate = {[1;2;3],[3;4;5;6]} %cell array with column vectors in each cell
ycoordinate = {[8;9;10],[12;16;17;10]} %cell array with column vectors in each cell
What I would like the product to be Without using a For loop is:
XYcoordinates = {[1 8;
2 9;
3 10]
[3 12;
4 16;
5 17;
6 10]}
It needs to be in this format with the [x y] sitting next to each other for a function I want to use with cellfun. If you have any suggestions, I would greatly appreciate it. Thanks!
-Michelle
  1 个评论
Jan
Jan 2013-7-30
Why do you want to avoid a FOR loop? Most likely the the cellfun appraoch is slower, so I do not see the benefit.

请先登录,再进行评论。

采纳的回答

Azzi Abdelmalek
Azzi Abdelmalek 2013-7-30
cellfun(@(x,y) [x y],xcoordinate',ycoordinate','un',0)
  1 个评论
Michelle
Michelle 2013-7-30
Awesome. I knew it had to be something simple like this, but I completely missed this solution. It does exactly what I wanted it to do. Thanks!

请先登录,再进行评论。

更多回答(2 个)

Jan
Jan 2013-7-30
Why do you want to avoid a FOR loop? Most likely the the cellfun approach is slower, so I do not see the benefit. So compare the speed:
XYCoordinate = cell(size(xcoordinate));
for iC = 1:numel(xcoordinate)
XYCoordinate{iC} = [xcoordinate{iC}, ycoordinate{iC}];
end

Andrei Bobrov
Andrei Bobrov 2013-7-30
strcat(xcoordinate',ycoordinate')

类别

Help CenterFile Exchange 中查找有关 Data Types 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by