How to use parfor to delete the first c elements of each cell of b?

1 回表示 (過去 30 日間)
Chaoyang Jiang
Chaoyang Jiang 2018 年 5 月 15 日
コメント済み: Image Analyst 2018 年 5 月 15 日
How to use parfor to delete the first c elements of cell b?
Error: The variable b in a parfor cannot be classified.
b=cell(1000,1);
c=randi(2,1000,1);
parfor m=1:1000
b{m,1}(1:c(m))=[];
end

回答 (1 件)

Image Analyst
Image Analyst 2018 年 5 月 15 日
Try this:
b=cell(1000,1); % Initialize to empty cells.
c = 10; % Whatever.
% Delete the first c cells
b(1:c) = [];
% Check that we have 9990 cells now.
whos b
  2 件のコメント
Chaoyang Jiang
Chaoyang Jiang 2018 年 5 月 15 日
Thank you for your answer. I want to delete the first c elements of each cell of b. E.g,
b{1,1}=[1 3 4];
c(1)=2;
b{1,1}c(1)=[];
then b{1,1}={4}
Image Analyst
Image Analyst 2018 年 5 月 15 日
Try this then:
% Create some random b
b = cell(10, 1);
for k = 1 : length(b)
b{k} = randi(99, 1, 5);
end
celldisp(b);
% Define c - it's random for each cell of b.
c = randi(4, length(b), 1)
% Use each c to delete that many elements from
% the corresponding cell of b
for k = 1 : length(b)
thisCell = b{k};
b{k} = thisCell(c(k)+1:end);
end
celldisp(b);
% or use cellfun().

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeParallel for-Loops (parfor) についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by