【发布时间】:2019-02-11 16:21:04
【问题描述】:
如何在涉及矩阵的元素操作中引用当前行。这类似于 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 语句中)视为向量。我不清楚为什么会这样,因为下面的代码行按预期工作(即 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
【问题讨论】:
-
我不太明白你想做什么。当您说“我希望 'C' 包含第二列,其中包含小于 A 中相应行元素的所有元素的总和”时,您到底是什么意思?另外,
sum(A<B)A 和 B 有不同的维度,你不能这样比较。 -
例如。 'A' 中的第五行是 5。'B' 中小于 5 的元素计数为 3,可以通过执行
sum(B<5)获得。现在“A”是10x1向量,但在[]的上下文中,运算符A 应该被视为具有“当前行”值的缩放器,就像我在上一个示例中演示的那样(即计算D)。跨度>