绘制mse和snr的matlab作图
时间: 2024-01-02 13:00:54 浏览: 206
要绘制MSE(均方误差)和SNR(信噪比)的MATLAB作图,我们可以使用plot函数来完成。
首先,我们需要准备好数据。假设我们有一个长度为N的信号x,以及一个相同长度的估计信号x_hat。那么MSE可以计算为:
MSE = sum((x - x_hat)^2) / N
SNR可以计算为:
SNR = 10 * log10(sum(x^2) / sum((x - x_hat)^2))
接下来,我们可以创建一个长度为N的误差向量error,其中error(i) = (x - x_hat)^2。然后,我们可以使用cumsum函数计算误差的累积和。使用mean函数计算累积均值,即MSE。
我们还可以计算信号的能量,即sum(x^2),并将其与误差的累积和进行比较,然后使用log10函数计算SNR。最后,我们可以使用plot函数将MSE和SNR作为函数的输入来绘制图形。
下面是MATLAB代码的示例:
```MATLAB
% 准备数据
N = 100; % 信号长度
x = randn(N, 1); % 原始信号
x_hat = x + randn(N, 1); % 估计信号
% 计算误差和MSE
error = (x - x_hat).^2; % 误差向量
cumulative_sum_error = cumsum(error); % 误差的累积和
mse = cumulative_sum_error ./ (1:N)'; % MSE
% 计算SNR
signal_energy = sum(x.^2); % 信号能量
snr = 10 * log10(signal_energy ./ cumulative_sum_error); % SNR
% 绘制图形
plot(1:N, mse, 'b', 'LineWidth', 1.5); % MSE为蓝色
hold on;
plot(1:N, snr, 'r', 'LineWidth', 1.5); % SNR为红色
legend('MSE', 'SNR');
xlabel('样本序列');
ylabel('值');
title('MSE和SNR的变化');
grid on;
```
通过运行以上代码,我们将得到一个显示MSE和SNR的变化的MATLAB作图。
阅读全文