Как сгенерировать спектрограмму wav-файла в Matlab с частотой на оси x

В рамках исследовательского проекта я хотел бы проанализировать звуковой файл, сгенерировав его спектрограмму.

Я смог успешно сгенерировать спектрограмму волнового файла в Matlab с частотой по оси Y и временем по оси X. Однако я хотел бы сгенерировать спектрограмму с частотой по оси X и временем по оси Y. Как это может быть сделано?

Я искал через стек и не нашел ни одного принятого ответа.

Мой код, который генерирует спектрограмму с частотой по оси Y и временем по оси X (код Matlab):

[song, fs] = wavread('filename.wav');
windowSize = 256;
windowOverlap = [];
freqRange = 0:300;
spectrogram(song, windowSize, windowOverlap, freqRange, fs, 'yaxis');

Я изменил параметр «yaxis» в спектрограмме функции на «xaxis», и теперь частота находится на оси x, а время на оси y. Но я получаю спектрограмму, отличную от того, что генерируется из надежного источника.

Вот спектрограмма, которую я генерирую -

Спектрограмма, сгенерированная из надежного источника (у меня нет кода).

Кроме того, цветовая схема отличается на обеих спектрограммах. И моя запись длится 50 секунд, тогда как время, указанное на этикетке, составляет 9 секунд. Как я могу решить эти проблемы?

Моя конечная задача - создать спектрограмму на устройстве Android (возможно, с помощью библиотеки GraphView в Android). Поэтому мне пришлось бы написать код для генерации спектрограммы на Java.

Любая помощь в этом очень ценится.

Ответы на вопрос(1)

Ваш ответ на вопрос