扩展矩阵时引用当前行

Referencing current row while extended a matrix

如何在涉及矩阵的逐元素运算中引用当前行。这类似于 C++ 中的 this 指针。

具体来说,我正在尝试向矩阵 'A' 添加另一列,其中每个新单元格值都是使用当前行中现有元素之间的缩放向量比较来计算的。

例如:

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

我希望 'C' 包含第二列,其中包含小于 A 中相应行元素的所有元素的计数。像这样:

C = 
 1  0
 2  0
 3  1
 4  2
 5  3
 6  4
 7  5
 8  5
 9  5
 10  5

我认为应该可以使用缩放向量比较和对结果求和来做到这一点(即 sum(B<A))。这不起作用:

>> C = [A, sum(B<A)]
error: mx_el_lt: nonconformant arguments (op1 is 5x1, op2 is 10x1)

Octave 解释器将 A(在 A<B 语句内)视为向量。我不清楚为什么会这样,因为像以下代码行一样按预期工作(即八度将 A 视为当前行中的缩放器元素):

>> D = [A, A + 5];
D =
    1    6
    2    7
    3    8
    4    9
    5   10
    6   11
    7   12
    8   13
    9   14
   10   15

问题:完成我正在做的事情的正确方法是什么?有没有办法在元素明智的陈述中引用 "current row variable" (即像 C = [A, sum(B

你快到了,但正如@Guille 提到的那样,它不起作用,因为你有两个不同维度的向量。但是,您可以根据这些值创建矩阵,这是 A ('current row') 的每个值与 B:

的比较
A = [1;2;3;4;5;6;7;8;9;10];
B = [2;4;6;5;3];

C=[A sum(B'<A,2)];  %B'<A creates a 5x10 matrix and ',2' in sum adds up rowwise