MATLAB cell to matrix

조회 수: 4 (최근 30일)
Benjamin Cowen
Benjamin Cowen 2014년 1월 13일
댓글: Benjamin Cowen 2014년 1월 13일
I have 1 row and 106 columns. Each cell contains various numbers. Some cells contain 1 number, some contain 5, etc. The problem is this: If one number is present, it looks great. Some cells have more than one number. I would like for the second number to go in the second row, third number in third row, etc. I am not sure how to do this. I am guessing I need to make a zeros matrix or something but I am not sure
  댓글 수: 6
Benjamin Cowen
Benjamin Cowen 2014년 1월 13일
Oh I see what you mean on your first comment. Instead of having multiple numbers in 1 cell, just 1 number in each cell. If a column has more than one number, just put next numbers in next rows
Benjamin Cowen
Benjamin Cowen 2014년 1월 13일
When I try A(1,j)=cat(1,C{1,j}), I get "Subscripted assignment dimension mismatch."

댓글을 달려면 로그인하십시오.

채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2014년 1월 13일
You can do this
M={1 [7 8] 3 [ 1 5 6] 0 [1 5 8] 2 10 }
n=cellfun(@numel,M)
m=max(n);
N=cell(m,numel(M))
for k=1:numel(M)
N(1:n(k),k)=num2cell(M{k}')
end
The result
N =
[1] [7] [3] [1] [0] [1] [2] [10]
[] [8] [] [5] [] [5] [] []
[] [] [] [6] [] [8] [] []
  댓글 수: 1
Benjamin Cowen
Benjamin Cowen 2014년 1월 13일
Awesome, works perfectly

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Matt J
Matt J 2014년 1월 13일
Is this what you want?
>> C={5,[6 7 8], [9,10]};
>>cell2mat(C)
ans =
5 6 7 8 9 10
Or,
>> [C{:}]
ans =
5 6 7 8 9 10
  댓글 수: 6
Benjamin Cowen
Benjamin Cowen 2014년 1월 13일
So I just copy that whole thing into a function file?
Matt J
Matt J 2014년 1월 13일
Yes. That is one of your options.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

아직 태그를 입력하지 않았습니다.

Community Treasure Hunt

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

Start Hunting!

Translated by