我有一个细胞阵列,每个细胞都是(x,y)坐标上的点(即,细胞的大小为[1x2])。是否有可能将其更改为矩阵,以保留那些协调点?
因为当我使用cell2mat时,我需要坐标时,特殊的协调会改变为[1x1]的大小。
我的单元格数组是这样的:[0,2] [0,2] [1,3] [-13,10] [1,4] [-1,5]
如何将其更改为矢量,以后可以使用这些坐标进行绘图?
答案 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);