0
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”,位于第一行和第二行。

那么解决它的代码是什么?谢谢..

4

1 回答 1

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)) 部分。

于 2012-08-06T12:29:45.013 回答