可能重复:
计算给定范围内矩阵中的值的数量
我有以下矩阵
A=[ 1 2 3 4 5 6 7;
3 4 5 6 8 9 1;
3 4 2 5 6 7 8]
如何找出第一行中有多少元素,它们的值在范围内>2 & <6
?
可能重复:
计算给定范围内矩阵中的值的数量
我有以下矩阵
A=[ 1 2 3 4 5 6 7;
3 4 5 6 8 9 1;
3 4 2 5 6 7 8]
如何找出第一行中有多少元素,它们的值在范围内>2 & <6
?
您需要使用向量化计算来考虑矩阵。(在这里使用 find 不是一个好的解决方案,因为它没有被矢量化以在行上独立操作。)
首先,如果您在 MATLAB 中尝试测试 A > 2 会发生什么?试试看!
A=[ 1 2 3 4 5 6 7;
3 4 5 6 8 9 1;
3 4 2 5 6 7 8];
>> A > 2
ans =
0 0 1 1 1 1 1
1 1 1 1 1 1 0
1 1 0 1 1 1 1
MATLAB 生成一个逻辑数组,当 A 的元素大于 2 时为真。类似地,如果我们键入 A < 6,我们会得到另一个逻辑数组。
>> A < 6
ans =
1 1 1 1 1 0 0
1 1 1 0 0 0 1
1 1 1 1 0 0 0
如果我们将这两个操作组合成一个表达式会怎样?
>> (A > 2) & (A < 6)
ans =
0 0 1 1 1 0 0
1 1 1 0 0 0 0
1 1 0 1 0 0 0
好的,所以这个数组告诉我们两个子表达式在哪里都为真。请注意,我们可以使用 sum 和其他算术运算对逻辑数组进行操作。
>> sum((A > 2) & (A < 6),2)
ans =
3
3
3
所以上面的表达式计算了每一行满足你目标的元素的数量,它会非常快。学习使用 MATLAB,因为它应该被使用。你的代码会变得更好。
如果我很好理解您对account的含义,如果您想要find
满足您的条件的元素:
B = A(1,:)
find(B > 2 & B < 6)
或在一行中:
find(A(1,:) > 2 & A(1,:) < 6)
您还必须知道,它find
为您提供了满足给定逻辑表达式的数组的索引,而不是实际元素。