フィルターのクリア

Thresholding Matrix Within Cell Array

1 回表示 (過去 30 日間)
itend
itend 2017 年 8 月 29 日
コメント済み: Cam Salzberger 2017 年 8 月 31 日
Hello,
I have a cell array called output. Each cell within output contains a 1024 x 1024 matrix. I would like to threshold each matrix so that elements below a given value are set to NaN.
I tried using:
output(output < 100000) = NaN;
However, I feel that this is the wrong approach. Intuitively, I want to use a for loop, however, I don't think that will be the most efficient method possible.
Thoughts? Suggestions?
Thanks :)
  1 件のコメント
Image Analyst
Image Analyst 2017 年 8 月 29 日
Why are you using a cell array instead of a regular 3-D array, and why did you want to set it to NaN? What are you going to do with the output array after that?

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

採用された回答

Cam Salzberger
Cam Salzberger 2017 年 8 月 29 日
編集済み: Cam Salzberger 2017 年 8 月 31 日
cellfun is your friend here. You can create a local, nested, or regular function to do the NaN-setting, and then just apply it to each element of the cell array:
function A = filterMatrix(A,thresh)
A(A < thresh) = NaN;
end
Then call it with:
filteredOutput = cellfun(@(A) filterMatrix(A, 100000), output, 'UniformOutput', false);
-Cam
  2 件のコメント
itend
itend 2017 年 8 月 29 日
Thank you for your response.
Unfortunately, it produced an error:
f = @(A) A(A < 100000) = NaN;
Error: The expression to the left of the equals sign is not a valid target for an assignment.
What do you think?
Cam Salzberger
Cam Salzberger 2017 年 8 月 31 日
Ah, sorry about that. I forgot you can't do assignment in anonymous functions. Easy enough to make a separate function for it though. I've edited my answer above to function correctly.
Image Analyst has a point though; could you not just create a 3-D matrix originally? That would allow you to do the whole thing in a single call. Also would take less overhead, though it will need a larger contiguous memory chunk.
-Cam

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

その他の回答 (0 件)

カテゴリ

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