Как сгенерировать спектрограмму 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.
Любая помощь в этом очень ценится.