Как обратиться к текущей строке в поэлементной операции, включающей матрицу.Это было бы аналогично указателю this в C ++.
В частности, я пытаюсь добавить еще один столбец в матрицу '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
) как вектор.Мне непонятно, почему это так, поскольку что-то вроде следующих строк кода работает, как и ожидалось (то есть октава обрабатывает 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)