A = [0 0 1 2 3 4 5 0 0;
1 2 3 4 5 0 0 0 0;
0 0 0 1 2 3 4 5 0;
0 0 0 0 1 2 3 4 5]
然后从上面的矩阵中,我想计算值 1,它与值 >3 的列不同。但如果只有一个值与值为“1”的列相同,则没有问题。
所以我希望结果是
资源 = 2。
它们是值“1”,位于第一行和第二行。
那么解决它的代码是什么?谢谢..
A = [0 0 1 2 3 4 5 0 0;
1 2 3 4 5 0 0 0 0;
0 0 0 1 2 3 4 5 0;
0 0 0 0 1 2 3 4 5]
然后从上面的矩阵中,我想计算值 1,它与值 >3 的列不同。但如果只有一个值与值为“1”的列相同,则没有问题。
所以我希望结果是
资源 = 2。
它们是值“1”,位于第一行和第二行。
那么解决它的代码是什么?谢谢..
如果我按照您在此处询问的内容进行操作。您希望能够知道给定列是否包含一个值,1
没有值3
或更大。
这应该让你开始:
for n = 1:size(A,2)
if(~numel(find(A(:,n)>2)) && numel(find(A(:,n)==1)))
disp('found')
end
end
分解这里发生的事情。
该循环旨在遍历矩阵中的每一列A
。
numel
返回括号 () 内矩阵中的元素数。
find
将返回与比较条件匹配的元素的索引。在第一种情况下,我们正在寻找大于 2 的元素。在第二种情况下,等于 1 的元素。由于我们只发送一列值(一个向量),我们只会得到一个向量来返回numel
调用。
numel
只需计算该向量中的项目数并返回该数字。if
如果向量为空,则数字为 0。我还使用了将 0 从解释为 false的事实,因此即使列中没有大于 2 的值,numel
您也不会执行其中的内容。if
因此,如果您想知道1
列中 s 的数量,只需使用 if 语句的 numel(find(A(:,n)==1)) 部分。