我有一个名为output的单元格数组。输出中的每个单元格都包含一个 1024 x 1024 矩阵。我想对每个矩阵进行阈值设置阈值,以便将低于给定值的元素设置为 NaN。
我尝试使用:
output(output < 100000) = NaN;
但是,我觉得这是错误的做法。直观地说,我想使用 for 循环,但是,我认为这不是最有效的方法。
思潮?建议?
谢谢:)
可以用cellfun
函数来完成!cell fun可以在每个单元格上实现一个函数(就像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,我想用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