2017-08-29 71 views
0

我有一個稱爲輸出的單元陣列。輸出中的每個單元都包含一個1024 x 1024的矩陣。我想對每個矩陣進行閾值設置,以使給定值以下的元素設置爲NaN。將閾值應用於單元陣列內的矩陣

我試着使用:

output(output < 100000) = NaN; 

不過,我覺得這是錯誤的做法。直觀地說,我想使用for循環,但是,我認爲這不是最有效的方法。

想法?建議?

謝謝:)

回答

1

它可以與cellfun功能!細胞樂趣做可以實現的每一個細胞的功能(這就像for循環)假設下面的例子

首先考慮你有一個名爲a變量細胞形式。

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 
在這個小區,我想如果條目低於3

所以我下面寫函數用於此目的

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 

輸出會像下面

NaN替代項

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