Можно ли применить оператор двоеточия к выражению в MATLAB? - PullRequest
2 голосов
/ 18 февраля 2012

Это очень удобно, если можно было использовать оператор двоеточия в выражении. Ну, насколько мне известно, это невозможно. Например, когда я хочу вычислить разницу между двумя матрицами, я должен сделать это в две строки.

diff = (a - b);
err = sum(abs(diff(:)));

вместо

diff = sum(abs((a-b)(:)));

Есть ли что-нибудь вокруг?

Ответы [ 3 ]

3 голосов
/ 18 февраля 2012

Вы можете обойти синтаксические ограничения с помощью анонимных вспомогательных функций.EG

oneD = @(x)x(:);
diff = sum(abs(oneD(a-b))));

По-прежнему занимает две строки.

3 голосов
/ 18 февраля 2012

Два варианта:

err = sum(abs(a(:)-b(:)));

или

err = sum(abs(reshape(a-b,[],1)));
1 голос
/ 18 февраля 2012

В этом конкретном случае вы можете сделать sum(abs(a(:)-b(:))), но в целом Matlab не поддерживает такого рода вложенные индексы.

...