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
, который обычно используется для перегрузки операторов подписки (т.е. {}
, ()
, .
) в пользовательских классах.