Biju
Biju

Reputation: 71

How to change a cell array into vector in matlab?

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

Answers (3)

Amro
Amro

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

Tobias
Tobias

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

Luis Mendo
Luis Mendo

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

Related Questions