如何通过考虑一些约束来计算此矩阵中的值1

时间:2012-08-06 10:41:51

标签: matlab

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”的相同列,则没有问题。

所以我希望结果是

res = 2.

它们是第一行和第二行中的值“1”。

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

1 个答案:

答案 0 :(得分: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返回parens()中矩阵中元素的数量。

find将返回与比较条件匹配的元素的索引。在第一种情况下,我们正在寻找大于2的元素。在第二个元素中,它们等于1.因为我们只发送一列值(一个向量),所以我们只得到一个向量来回复{{1调用。

numel只计算该向量中的项目数并返回该数字。如果向量为空,则数字为0.我还使用numelif中的0解释为false的事实,这样您就不会执行numel内的内容如果列中没有大于2的值。

因此,如果您想知道列中if的数量,您只需使用if语句的numel(find(A(:,n)== 1))部分。