Загадочный Matlab

Дело в том, что мы в ЛЭТИ занимаемся одним небольшим проектом, связанным с распознаванием речи. И вот присылает мне мой коллега код для Matlab, который, по его утверждению, проверен и работает. Во время компиляции выдаётся ошибка вот в такой строчке:
Error using .*
Matrix dimensions must agree.
Error in preproc_MFCC_extraction (line 79)
windowed = x.*hamming(length(x))'; % взвешивание окном
Ну, то есть при использовании операции поэлементного умножения матриц размеры этих самых матриц не согласованы. Смотрю промежуточные результаты и вижу, что размерность X получается 882x1, а размерность транспонированного окна Хэмминга 1x882. Значит, поэлементно их так не умножить. На всякий случай залез в help, а там написано следующее:
"Inputs A and B must be the same size unless one is a scalar..." Говорю коллеге, что это не работает, но он клянётся, что работало именно так. Ладно, убираю транспонирование, собирается дальше. Потом столкнулся с тем, что забыл установить toolbox для распознавания речи - MSR Identity Toolbox. Поставил toolbox и компилирую снова - опять ошибка на том же самом месте! Выдаёт такое же сообщение:
Error using .*
Matrix dimensions must agree.
Error in preproc_MFCC_extraction (line 79)
windowed = x.*hamming(length(x)); % взвешивание окном
Но теперь то у меня код без транспонирования! Вернул транспонирование на место, и всё собралось! А это значит, что с toolbox и без функция hamming() возвращает результаты в разном формате! Впервые открыл для себя такое в Matlab! Коллега, кстати, этого тоже не знал. Вот так:)
|
</> |