Целые числа Matlab Enframe можно комбинировать только с целыми числами того же класса

Я новичок в MatLab, и я понимаю, что этот вопрос уже так часто задают, и я проверил некоторые ответы здесь и здесь, но ничего из этого не работает на мой случай.

Я открыл файл wav и попытался преобразовать его в частотную область:

[y,fs,wmode,fidx]=readwav('sound.wav','r',-1,0)
left = y(:,1)

А потом посмотрел рисунок:

plot(left)
figure
spgrambw(left,16000)

Однако я получаю указанную ошибку, когда пытаюсь создать фрейм с помощью:

frames = enframe(left, uint16(length(left)/6))

Я пытался:

[1] enframe(double(left), uint16(length(left)/6))

[2] uint = uint16(length(left)/6)
    enframe(double(left), uint)

Оба по-прежнему возвращают целые числа, могут быть только комбинированные ошибки. слева - матрица 48000 X 1. Любая помощь приветствуется.


person rayyar    schedule 07.10.2019    source источник
comment
Почему вы пытаетесь преобразовать второй аргумент enframe() в uint16? Большинство функций Matlab ожидают двойные аргументы.   -  person nimrodm    schedule 07.10.2019
comment
Я думаю, что это должно быть: frames = enframe(left, floor(length(left)/6)). Еще можно сделать: frames = enframe(left, double(uint16(length(left)/6))), но это не имеет смысла.   -  person Rotem    schedule 07.10.2019
comment
да, я изменил uint16 на двойной, и теперь он работает ... Я думаю, это из-за размера матрицы? А uint16 не может его вместить?   -  person rayyar    schedule 08.10.2019