将阈值应用于单元格阵列中的矩阵

时间:2017-08-29 19:39:16

标签: arrays matlab matrix threshold

我有一个叫做输出的单元格数组。输出中的每个单元格包含1024 x 1024矩阵。我想对每个矩阵进行阈值处理,以便将给定值以下的元素设置为NaN。

我尝试使用:

output(output < 100000) = NaN; 

然而,我觉得这是错误的做法。直觉上,我想使用for循环,但是,我认为这不是最有效的方法。

思考?建议?

谢谢:)

1 个答案:

答案 0 :(得分:1)

可以使用cellfun函数完成!cell fun可以在每个单元格上实现一个函数(它就像循环一样)假设下面的例子

首先考虑你有一个名为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

,我想用NaN替换条目

所以我为此目的写下面的函数

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

输出将如下所示

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