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”。
那么解决它的代码是什么? 感谢..
答案 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.我还使用numel
将if
中的0解释为false的事实,这样您就不会执行numel
内的内容如果列中没有大于2的值。
因此,如果您想知道列中if
的数量,您只需使用if语句的numel(find(A(:,n)== 1))部分。