matlab计算信噪比代码
时间: 2023-08-13 22:03:16 浏览: 65
以下是MATLAB中计算信噪比的代码示例:
```Matlab
% 假设有原始信号 x 和噪声信号 n
% 首先计算信号的平方和
signal_power = norm(x)^2;
% 然后计算噪声的平方和
noise_power = norm(n)^2;
% 计算信噪比(SNR)
SNR = 10*log10(signal_power/noise_power);
```
这里使用 `norm` 函数计算信号和噪声的平方和,然后使用公式 `SNR = 10*log10(signal_power/noise_power)` 计算信噪比,最终结果以分贝(dB)为单位。
相关问题
matlab 计算峰值信噪比代码
以下是MATLAB计算峰值信噪比(PSNR)的示例代码:
```matlab
% 读入原始图像和处理后的图像
img1 = imread('original_image.png');
img2 = imread('processed_image.png');
% 计算峰值信噪比
mse = mean(mean((img1 - img2).^2));
psnr = 10*log10(255^2/mse);
% 显示结果
fprintf('PSNR值为 %.2f dB\n', psnr);
```
其中,`img1`和`img2`分别是原始图像和处理后的图像,可以根据实际情况修改文件名或路径。计算过程中采用了均方误差(MSE)的公式,最后把结果转换成了以分贝(dB)为单位的峰值信噪比。
matlab自适应滤波器计算信噪比代码
以下是使用MATLAB计算自适应滤波器信噪比的示例代码:
```matlab
% 设计自适应滤波器
N = 1000; % 信号长度
n = 1:N;
s = sin(2*pi*0.1*n); % 原始信号(正弦波)
wgn = randn(1,N); % 加性高斯白噪声
x = s + wgn; % 观测信号(原始信号 + 噪声)
d = s; % 期望输出信号为原始信号
L = 32; % 滤波器长度
mu = 0.05; % 步长
w = zeros(1,L); % 初始滤波器系数为0
y = zeros(1,N); % 滤波器输出
for i = L:N
x_vec = x(i:-1:i-L+1);
y(i) = w * x_vec';
e(i) = d(i) - y(i); % 计算误差
w = w + mu * e(i) * x_vec; % 更新滤波器系数
end
% 计算信噪比
SNR = 10 * log10(sum(s.^2) / sum(e.^2));
disp(['信噪比为:',num2str(SNR),'dB']);
```
在这个示例中,我们生成一个长度为1000的正弦波信号,并添加高斯白噪声产生观测信号。然后设计一个自适应滤波器来恢复原始信号,并计算信噪比。