Reshaping cell array having element with different sizes
조회 수: 6 (최근 30일)
이전 댓글 표시
I have a variable named A which is a 5000×4 cell array containing M×2 matrices. M varies for each element. 5000 is the number of different measurement for 4 profiles. The following shows only two out of 5000 measurements. First row shows measurement#1 and the second row is measurement#2:
[3413x2 double] [3082x2 double] [3186x2 double] [3143x2 double]
[3344x2 double] [3044x2 double] [3200x2 double] [3143x2 double]
I am trying to have all the profile for each measurement in one matrix of size N×2, named B. for example, for the first measurement N=3413+3082+318+3143=12824. So, B is vertcat of the first row of A, it means B is constructed by putting each profile under the previous profile. finally B{i} will be all the profiles for ith measurement.
Could you help me with that?
댓글 수: 0
채택된 답변
Andrei Bobrov
2011년 6월 15일
A1 = A';
B = arrayfun(@(x)cat(1,A1{:,x}),1:size(A1,2),'un',0)
댓글 수: 3
Andrei Bobrov
2011년 6월 16일
Hi! Having seen Your solution to <http://www.mathworks.com/matlabcentral/answers/9600-subtracting-a-constant-from-all-the-array-elements-in-a-structure>, think that the explanation is not needed?
추가 답변 (1개)
Walter Roberson
2011년 6월 15일
I think this might work:
B = arrayfun(@(idx) [A{idx,:}], 1:size(A,1), 'un', 0);
댓글 수: 3
Walter Roberson
2011년 6월 15일
Ah, try
B = arrayfun(@(idx) vertcat(A{idx,:}), 1:size(A,1), 'un', 0);
You use arrayfun instead of cellfun because cellfun processes each cell individually whereas you want to process groups of cells.
참고 항목
카테고리
Help Center 및 File Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!