Matlab, альтернатива созданию дополнительного вектора?

Если у меня есть это, я получаю ошибку

sum(vector) == cumsum(vector)(length(vector))

>> Error: ()-indexing must appear last in an index expression.

Я знаю, я могу просто сделать:

Vec1 = cumsum(mat);
sum(mat) == Vec1(length(mat))

который вернет логическое 1.

Есть ли альтернатива, чтобы получить все на одной линии?

1 ответ

Решение

Ну, если вы абсолютно решительно настроены сделать это в одну строку,

sum(vec) == subsref(cumsum(vec),struct('type','()','subs',{{numel(vec)}}))

Но это пограничное злоупотребление subsref, который обычно используется для перегрузки операторов подписки (т.е. {}, (), .) в пользовательских классах.

Другие вопросы по тегам