2017-08-29 4 views
0

私は出力と呼ばれるセル配列を持っています。出力内の各セルには、1024 x 1024のマトリックスが含まれています。与えられた値以下の要素がNaNに設定されるように、各行列をしきい値にしたいと思います。セル配列内のマトリックスに閾値を適用する

私が使用してみました:

output(output < 100000) = NaN; 

はしかし、私は、これは間違ったアプローチであると感じています。直感的に、私はforループを使いたいと思いますが、これが可能な最も効率的な方法ではないと思います。

思考?提案?

感謝:)

答えて

1

それはcellfun機能で行うことができます!セルの楽しみは、すべてのセルの機能を実装することができます(それがループのようなものだ)例

下回ったとはまずあなたがaという名前の変数を持って考えます細胞形態。私は、私は、出力は以下の

のようになります

function out = main_func() 
%% define a 
a{1,1}=[1 2;3 4]; 
a{1,2}=[4 5;1 2]; 
a{2,1}=[1 2;5 5]; 
a{2,2}=[5 5;5 5]; 


out=cellfun(@(T) cell_f(T),a,'uniformOutput',false); % using cell fun function 

function x = cell_f(x) 
x(x<3)=nan; % if entries lower that 3 then substitute with Nan 

この目的のために機能の下に書く3

よりエントリー低い場合NaNでエントリを置換する場合は、このセル内

a{1,1} = 
1  2 
3  4 

a{2,1} = 
1  2 
5  5 

a{1,2} = 
4  5 
1  2 

a{2,2} = 
5  5 
5  5 

ans{1,1} = 
NaN NaN 
3  4 

ans{2,1} = 
NaN NaN 
5  5 

ans{1,2} = 
4  5 
NaN NaN 

ans{2,2} = 
5  5 
5  5 
+0

ありがとうございます。しかし、私はこれを私のコードで実装する際にいくつかの問題を抱えています... 私のセル配列の名前が出力され、出力の各セルには1024 x 1024の行列があります。すべての要素をすべての行列で1e6 = nan以下にしたい場合、どうすればよいでしょうか? – itend

関連する問題