سؤال

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?

هل كانت مفيدة؟

المحلول

>> 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

نصائح أخرى

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})

myCell = {[0,2] [0,2] [1,3] [-13,10] [1,4] [-1,5]};
hold on;
cellfun(@(c) plot(c(1),c(2),'o'),myCell);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top