Matrix 如何使用双索引重新定义矩阵值

Matrix 如何使用双索引重新定义矩阵值,matrix,octave,indexing,Matrix,Octave,Indexing,假设我有一个矩阵a: A = [1 2; 3 4]; 我可以使用双索引检索第三行中超过3的值: >> B = A(2,:)((A(2,:)>3)) >> B = 4 但是,使用双索引重新定义矩阵值不起作用: >> A(2,:)((A(2,:)>3)) = 0 >> error: () must be followed by . or close the index chain 如果不将A(2,:)放入一个变量,执行该操作并再次将其

假设我有一个矩阵
a

A = [1 2; 3 4];
我可以使用双索引检索第三行中超过3的值:

>> B = A(2,:)((A(2,:)>3))
>> B = 4
但是,使用双索引重新定义矩阵值不起作用:

>> A(2,:)((A(2,:)>3)) = 0
>> error: () must be followed by . or close the index chain

如果不将
A(2,:)
放入一个变量,执行该操作并再次将其放入
A(2,:)
中,我怎么能做到这一点呢?

我在发布后1秒就找到了答案。关键是不要使用双重索引

>> A(2,A(2,:)>3) = 0

通常,EXPR()不是有效的MATLAB语法,其中EXPR是任意表达式。有一种特殊情况下,这种语法是有效的,即使用单元格数组。@PhillipCloud OP没有指定,但从他的示例中,我猜他使用的是八度音阶。Octave没有这个限制,您可以在不使用临时/虚拟变量的情况下索引任何内容。