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

1 次查看(过去 30 天)
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 CenterFile Exchange 中查找有关 Parallel for-Loops (parfor) 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by