How to EFFICIENTLY extract different length of vector from a different cell container?

조회 수: 3 (최근 30일)
Dear all, the idea was to extract different length of vector from a different cell container as demonstrated at the code below. However, I wonder if we can achieve the same procedure using CELLFUN instead. I really appreciate for any tips.
Thanks in advance
Data_CELL = {randi(9, 10,1),randi(9, 6,1),randi(9, 12,1),randi(9, 12,1)};
Extracttill=[4 4 10 9]';
ExtractedData=cell(4,1);
for f_x=1:4
data=Data_CELL{1,:};
ExtrcFUntl=Extracttill(f_x,1);
ExtractedData{f_x,1}=data(1:ExtrcFUntl,:);
end
  댓글 수: 2
KSSV
KSSV 2017년 11월 28일
Note that Cellfun also uses for loop inside.
balandong
balandong 2017년 11월 28일
Thanks for the heads up. However, using CELLFUN make the overall code more compact, although I think it may consume the processing time.

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

채택된 답변

Jos (10584)
Jos (10584) 2017년 11월 28일
편집: Jos (10584) 2017년 11월 28일
Here is a "hidden-loop / one-liner":
Data_CELL = {randi(9, 10,1),randi(9, 6,1),randi(9, 12,1),randi(9, 12,1)};
Extracttill=[4 4 10 9]';
endExtractedData = arrayfun(@(k) Data_CELL{k}(1:Extracttill(k)),1:numel(Data_CELL),'un',0)
  댓글 수: 2
balandong
balandong 2017년 11월 28일
Hi Jos, Thanks for the quick reply and awesome solution. Really appreciate it.
Btw, what do you mean by Do you not want to extract the values from 1 until a specific value, rather than a single value?. Your solution above does answer my original question actually.
Jos (10584)
Jos (10584) 2017년 11월 28일
Oh, sorry, I read your question to quickly ... answer updated!

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by