Амплитудная фильтрация Specgram - MATLAB R2008a - PullRequest
1 голос
/ 26 января 2012

Итак, я написал быстрый скрипт в Matlab, сделайте некоторую визуализацию для меня-

function spectro(filename,maxFreq)

wavchunksizefix(filename);

[y,fs] = wavread(filename);

subplot(2,1,1);
plot(y);
ylim([0 1]);
title('Signal Amplitude');

subplot(2,1,2);
specgram(y,1024,fs);
ylim([0 maxFreq]);
cb = colorbar;
set(get(cb,'title'),'string','dB');
title('Original Signal Spectrogram');

Что мне было интересно, так это - как изменить вывод specgram (), чтобы он отображал только определенный диапазон дБ? Прямо сейчас он показывает кучу ненужных шумов в диапазоне от 0 до 40 дБ, и я хочу видеть только от 0 до -50 дБ (к сожалению, я не могу опубликовать пример изображения, потому что я новичок).

1 Ответ

1 голос
/ 30 января 2012

Очень круто, спасибо, ребята.Я написал это для фильтрации сигнала более 40 дБ, и, похоже, он работает -

[y,fs] = wavread('matrecord.wav'); 
centerval = mean(y); 
gdb = 20*log10(y/centerval);
ogv = (gdb > 40); 
x = y;
x(ogv) = 0; 

Когда я запускаю для этого specgram (), похоже, он работает.

...