扩展矩阵时引用当前行

时间:2019-02-11 02:54:06

标签: matlab octave

如何在涉及矩阵的元素方式操作中引用当前行。这将类似于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)

此处,八度音阶解释器将A(在A<B语句内)视为向量。我不清楚为什么会这样,因为以下几行代码可以按预期工作(即octave在当前行中将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

问题:完成我正在做的事情的正确方法是什么?有没有一种方法可以在元素明智的语句中引用“当前行变量”(即类似C = [A,sum(B

1 个答案:

答案 0 :(得分:0)

您快到了,但是正如@Guille所说,它将不起作用,因为您有两个不同尺寸的向量。但是,您可以根据这些值创建一个矩阵,这是A(“当前行”)的每个值与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