如何在matlab中将单元格数组更改为向量?

时间:2014-01-23 15:04:37

标签: matlab vector cell-array

我有一个细胞阵列,每个细胞都是(x,y)坐标上的点(即,细胞的大小为[1x2])。是否有可能将其更改为矩阵,以保留那些协调点?

因为当我使用cell2mat时,我需要坐标时,特殊的协调会改变为[1x1]的大小。

我的单元格数组是这样的:[0,2] [0,2] [1,3] [-13,10] [1,4] [-1,5]

如何将其更改为矢量,以后可以使用这些坐标进行绘图?

3 个答案:

答案 0 :(得分:5)

>> myCell = {[1 2],[3 4],[5 6]}; %// example cell. Can have any size/shape
>> result = cell2mat(myCell(:)) %// linearize and then convert to matrix
result =
     1     2
     3     4
     5     6

要绘制:

plot(result(:,1),result(:,2),'o') %// or change line spec

答案 1 :(得分:3)

另一种实现目标的方法:

c = {[1 2], [3 4], [5 6]};
v = vertcat(c{:});    % same as: cat(1,c{:})

plot(v(:,1), v(:,2), 'o')

MATLAB中的单元格数组可以扩展为comma-separated list,因此上述调用相当于:vertcat(c{1}, c{2}, c{3})

答案 2 :(得分:0)

myCell = {[0,2] [0,2] [1,3] [-13,10] [1,4] [-1,5]};
hold on;
cellfun(@(c) plot(c(1),c(2),'o'),myCell);