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

1 次查看(过去 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

采纳的回答

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.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by