Сравнение шумов в MATLAB
Предполагая, что у меня есть два сигнала (исходные данные в виде файла Excel), измеренные от двух разных источников питания, я хочу сравнить уровни шума этих сигналов, чтобы выяснить, какой из них самый шумный. Оба блока питания генерируют сигналы с одинаковой частотой, но количество точек данных различно. Есть ли способ сделать это в MATLAB?
1 ответ
Вы можете рассчитать отношение сигнал / шум для каждого сигнала. Это просто отношение средней мощности сигнала к средней мощности шума, обычно измеряемой в децибелах. Идеальный бесшумный сигнал будет иметь SNR = бесконечность.
Напомним, что мощность сигнала является просто квадратом амплитуды сигнала, и чтобы получить значение x
в децибелах, мы просто берем 10*log10(x)
,
SNR = 10*log10( mean(signal.^2)/mean(noise.^2) );
Чтобы отделить сигнал от шума, вы можете запустить фильтр нижних частот над шумовым сигналом.
Чтобы получить шум, вы можете просто вычесть чистый сигнал из шумного сигнала.
noise = noisy_signal - signal;