フィルターのクリア

removing element from all arrays in cell array of 1-dimensional arrays

1 回表示 (過去 30 日間)
Kees Roos
Kees Roos 2012 年 5 月 4 日
I have a cell array out = cell(n,1), and each out{j}, 1<= j <= n, is a vector of integers. These vectors have different lengths. How can I efficiently remove an integer k from all vectors containing k?

採用された回答

Andrei Bobrov
Andrei Bobrov 2012 年 5 月 4 日
newout = cellfun(@(x)setdiff(x,k),out,'un',0);

その他の回答 (1 件)

Jan
Jan 2012 年 5 月 4 日
for i = 1:n
v = out{i};
out{i} = v(v ~= k);
end
I assume 1. that a smarter cellfun approach is slower and 2. that spending more time for programming a faster solution (if there is any) will not pay off, except that this function is called trillions of times.
  1 件のコメント
Kees Roos
Kees Roos 2012 年 5 月 4 日
Thanks! Your remark on cellfun turns out to be true. But in my case, where n=1000, the for loop takes also too much time. I was hoping for a 'vectorized' solution.

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

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by