build a matrix from cell

3 views (last 30 days)
Niki
Niki on 8 May 2013
Dear
I have a cell array which I need to select only first column of each cell separately and put it into a matrix. But each column has different number of row.
can somebody help me ? I think I can build a matrix of zero with the size of my cell and then I put each column separately. However, following effort does not work.
[n,m]=size(X)
A = zeros(100,n);
for i=1:n
A (:,n) = X{n}(:,1)
end

Answers (2)

Azzi Abdelmalek
Azzi Abdelmalek on 8 May 2013
X={magic(4),eye(4),rand(4)} % Example
y=cell2mat(cellfun(@(x) x(:,1),X,'un',0))
  3 Comments
Azzi Abdelmalek
Azzi Abdelmalek on 8 May 2013
y=cell2mat(cellfun(@(x) x(:,1)',X,'un',0))'
Niki
Niki on 8 May 2013
Edited: Niki on 8 May 2013
Again thanks but as I explained from very beginning the row of each column is not equal, by running that one I get this error
??? Error using ==> cat
CAT arguments dimensions are not consistent.
Error in ==> cell2mat at 85
m{n} = cat(1,c{:,n});

Sign in to comment.


Azzi Abdelmalek
Azzi Abdelmalek on 8 May 2013
Edited: Azzi Abdelmalek on 8 May 2013
X={magic(5);eye(4);rand(6)}
m=numel(X);
n=max(cellfun(@(x) size(x,1),X));
out=zeros(n,m);
for k=1:m
a=X{k}(:,1);
out(1:numel(a),k)=a;
end
  3 Comments
Azzi Abdelmalek
Azzi Abdelmalek on 8 May 2013
What is the size of X?
Niki
Niki on 8 May 2013
[n,m]=size(peaks)
n =
8300
m =
1

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!