我在做生物信号采集的工作。我做了一个实验,详细如下所示,现在我正试图从这些数据中获得一些结果。
我在Matlab中有一个信号的文本文件。我把信号加载到波形发生器上,然后在示波器上记录发生器的输出。我把示波器记录的信号输入Matlab。原始信号与示波器信号的皮尔逊相关系数为0.9958。
我想要计算示波器信号的信噪比(我称之为我的信号,再加上通过数模转换引入的任何噪音,反之亦然)。我已经附上了两个信号的片段,供参考。
因此,我的原始信号是X,示波器信号是X+ N,我使用snr函数计算信噪比,如下所示。
snr(original, (oscilloscope - original))
我得到的结果是20.44 dB。这在我看来是不对的,就像我想的那样,在如此高的相关性下,信噪比应该高得多?
还是在这种情况下尝试计算信噪比是不合适的呢?
所有的帮助都是感激的。
谢谢
编辑:几个结果的图与侦察的模拟关系
发布于 2017-11-10 23:09:33
你可能会感到惊讶的是,即使是这样中等的信噪比也会导致相当高的相关性。
我做了一个实验来说明相关性和信噪比估计之间的近似关系.因为我没有你特定的脑电图信号,我只是用了一个参考常量信号和一些高斯白噪声。请记住,这种关系可能会受到信号和噪音性质的影响,但它应该让你知道该期待什么。可以使用以下代码执行此模拟:
SNR = [10:1:40];
M = 10000;
C = zeros(size(SNR));
for i=1:length(SNR)
x = ones(1,M);
K = sqrt(sum(x.*x)/M)*power(10, -SNR(i)/20);
z = x + K*randn(size(x));
C(i) = xcorr(x,z,0)./sqrt(sum(x.*x)*sum(z.*z));
end
figure(1);
hold off; plot(SNR, C);
corr0 = 0.9958;
hold on; plot([SNR(1) SNR(end)], [corr0 corr0], 'k:');
snr0 = 20.44;
hold on; plot([snr0 snr0], [min(C) max(C)], 'r:');
xlabel('SNR (dB)');
ylabel('Correlation');
虚线黑色水平线突出显示您的0.9958相关测量,虚线红色垂直线突出您的20.44 dB信噪比结果。
我会说这是一个很好的匹配!
事实上,对于我的模拟(x = 1
;z = x + N(0,σ)
)中的这个具体情况,如果我们将C(x,z)
表示为x
和z
之间的相关性,而σ
表示噪声标准差,我们实际上可以显示:
如果相关值为0.9958,则会产生20.79dB的信噪比,这与您的结果是一致的。
https://stackoverflow.com/questions/47186551
复制相似问题