-1

可能重复:
计算给定范围内矩阵中的值的数量

我有以下矩阵

A=[ 1 2 3 4 5 6 7;
    3 4 5 6 8 9 1;
    3 4 2 5 6 7 8]

如何找出第一行中有多少元素,它们的值在范围内>2 & <6

4

2 回答 2

0

您需要使用向量化计算来考虑矩阵。(在这里使用 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,因为它应该被使用。你的代码会变得更好。

于 2012-08-19T12:53:24.117 回答
0

如果我很好理解您对account的含义,如果您想要find满足您的条件的元素:

B = A(1,:)
find(B > 2 & B < 6)

或在一行中:

find(A(1,:) > 2 & A(1,:) < 6)

您还必须知道,它find为您提供了满足给定逻辑表达式的数组的索引,而不是实际元素。

于 2012-08-19T03:45:45.783 回答