我有一个叫做输出的单元格数组。输出中的每个单元格包含1024 x 1024矩阵。我想对每个矩阵进行阈值处理,以便将给定值以下的元素设置为NaN。
我尝试使用:
output(output < 100000) = NaN;
然而,我觉得这是错误的做法。直觉上,我想使用for循环,但是,我认为这不是最有效的方法。
思考?建议?
谢谢:)
答案 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