2015-02-07 4 views
0

У меня есть и звуковой файл, из которого я сюжет спектрограммы в MATLAB с помощью:Есть ли способ, чтобы изменить масштаб оси Spectogram в MATLAB

M = 2048; 
spectrogram(data,hanning(M),M/2,0:20:10000,fs,'yaxis'); 

результат выглядит отлично: spectrogram

ось времени масштабируется от 0 tell 20, мой вопрос - есть ли способ сделать это посмотреть 0 tell 200 a сохранить сюжет как есть?

+0

Да, вы можете, но это может и не иметь смысла. Каков размер 'data' (сколько точек?) И какова частота дискретизации вашего сигнала' fs'? – Hoki

+0

@hoki длина файла: 201600 с fs 96000 – Engine

+1

Уверена ли вы в этом? что сделало бы данные «201600/96000 = 2,1 секунды». Не 21, как на вашем графике. – Hoki

ответ

3

Если вы просто хотите, чтобы ось х «выглядят как» он идет от 0 до 200, вы можете переопределить XTickLabels.

Вот код:

set(gca, 'XTick', 0:20);   % Place Ticks at 0, 1, 2 ... 20 
set(gca, 'XTickLabel', 0:10:200); % Mark them as 0, 10, 20 ... 200 

Он не будет ничего сам сюжет, только на дисплее оси х изменится.

Best,

0

Учитывая размер ваших входных данных и частоту дискретизации, образцы образцов должны составлять чуть более 20 секунд. Если массив предназначен для представления 200 секунд, тогда вы должны указать неверную частоту дискретизации - она ​​должна быть примерно в 10 раз медленнее. В противном случае вам потребуется больше входных данных. Если на графике будет всего 20 секунд данных, то он не сможет занять 200 секунд.

Думаю, xlim([0 200]) установит ось на 0-200, но данные будут находиться только в первые 20 секунд - остальная часть графика будет пустой.

+0

спасибо за ваш ответ, ну на самом деле это 0 говорят 200 об/мин за 20 секунд, – Engine

1

Вы должны просто сделать Somthing как:

xlim([0 200]) 

Это будет изменять ось х

Смежные вопросы