gpt4 book ai didi

arrays - 检查方阵中的所有诊断是否为真

转载 作者:行者123 更新时间:2023-12-02 15:25:47 25 4
gpt4 key购买 nike

我正在尝试检查方阵中所有可能的对角线和反对角线是否有一个以上的真值,并返回 true,否则返回 false。到目前为止,我已尝试如下但并未涵盖所有可能的对角线:

n=8; %matrix dimension 8 x 8
diag= sum(A(1:n+1:end));
d1=diag>=2;
antiDiag=sum(A(n:n-1:end));
d2=antiDiag>=2;

if ~any(d1(:)) || ~any(d2(:))
res= true;

else
res=false;
end

这是错误的:

 0     0     0     0     0     1     0     0
0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1

这是真的:

 0     0     0     0     0     0     0     1
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

由于这是我使用 Matlab 的第一步,是否有特定的函数或更好的方法来实现我正在寻找的结果?

最佳答案

要检测任何对角线或反对角线(不仅仅是主对角线和反对角线)是否有多​​个非零值:获取非零值的行和列索引, iijj;然后检查 ii-jj(对角线)或 ii+jj(反对角线)的任何值是否重复:

[ii, jj] = find(A);
res = (numel(unique(ii-jj)) < numel(ii)) || (numel(unique(ii+jj)) < numel(ii));

关于arrays - 检查方阵中的所有诊断是否为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30472618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com