Reputation: 71
I have a cell array which each cell is a point on (x,y) coordination (i.e, the cells are of size [1x2]). Is it possible to change it to matrix that those coordination points to be reserved?
Because when I used cell2mat, the peculiar coordination was change to the size of [1x1] while I need the coordinates.
my cell array is like this: [0,2] [0,2] [1,3] [-13,10] [1,4] [-1,5]
How I can change it to a vector that these coordinates can be used later for plotting?
Upvotes: 3
Views: 23109
Reputation: 124553
Another way to accomplish this:
c = {[1 2], [3 4], [5 6]};
v = vertcat(c{:}); % same as: cat(1,c{:})
plot(v(:,1), v(:,2), 'o')
Cell arrays in MATLAB can be expanded into a comma-separated list, so the above call is equivalent to: vertcat(c{1}, c{2}, c{3})
Upvotes: 4
Reputation: 4074
myCell = {[0,2] [0,2] [1,3] [-13,10] [1,4] [-1,5]};
hold on;
cellfun(@(c) plot(c(1),c(2),'o'),myCell);
Upvotes: 0
Reputation: 112659
>> 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
To plot:
plot(result(:,1),result(:,2),'o') %// or change line spec
Upvotes: 6