我的数据如下所示:
for a=1:2
for b=1:2
for c=1:2
for d=1:2
m{a,b}{c,d}=zeros(3,3);
end
end
end
end
m{1,1}{1,1}=[6 1 4;3 7 2;1 5 6]; %pass
m{1,1}{1,2}=[3 5 4;9 2 7;5 5 6];
m{1,1}{2,1}=[5 2 3;5 9 5;2 2 3];
m{1,1}{2,2}=[2 1 0;3 5 6;8 8 8];
m{1,2}{1,1}=[2 1 3;5 6 7;3 5 5];
m{1,2}{1,2}=[6 2 4;7 7 9;3 5 8];%pass
m{1,2}{2,1}=[1 2 2;4 5 5;2 6 7];
m{1,2}{2,2}=[3 3 1;2 4 5;6 7 5];
m{2,1}{1,1}=[2 5 0;3 7 6;8 6 8];
m{2,1}{1,2}=[3 6 4;3 2 7;5 8 6];
m{2,1}{2,1}=[3 9 1;2 1 5;6 2 8];
m{2,1}{2,2}=[9 1 4;9 7 7;5 2 8];%pass
m{2,2}{1,1}=[0 5 0;3 2 6;8 6 9];
m{2,2}{1,2}=[1 2 7;5 2 5;4 2 6];
m{2,2}{2,1}=[2 1 3;2 4 6;6 9 5];
m{2,2}{2,2}=[3 7 1;1 4 5;6 9 3];
我想取每组数据的对角线,检查所有这些数字是否大于5。
例如,m {1,1} {1,1}的对角线分别为6,7和6,大于5,因此满足条件。
此外,我需要知道通过条件的数据集的位置。在这个例子中,数据集m {1,1} {1,1},m {1,2} {1,2}的结果和m {2,1} {2,2}通过。
答案 0 :(得分:2)
t=cellfun(@(mii) cellfun(@(mjj) all(diag(mjj)>5),mii),m,'uni',false);
t =
[2x2 logical] [2x2 logical]
[2x2 logical] [2x2 logical]
t{1,1} =
1 0
0 0
所以m{1,1}{1,1}
为真,m{1,1}{1,2}
为假等等
答案 1 :(得分:1)
a=cellfun(@(x) cellfun(@(y) all(diag(y)>5),x),m,'uniformoutput',false)
你可以在:)中找到答案。