我想确定估算模型与未来新数据的匹配程度。为此,经常使用预测误差图。基本上,我想比较测量输出和模型输出。我使用最小均方算法作为均衡技术。有人可以帮助绘制模型和测量数据之间的比较的正确方法吗?如果估计接近真,那么曲线应该彼此非常接近。下面是代码。 u
是均衡器的输入,x
是有噪声的接收信号,y
是均衡器的输出,w
是均衡器权重。是否应使用x
和y*w
绘制图表?但是x
很吵。我很困惑,因为测量的输出x
是有噪声的,模型输出y*w
是无噪声的。
%% Channel and noise level
h = [0.9 0.3 -0.1]; % Channel
SNRr = 10; % Noise Level
%% Input/Output data
N = 1000; % Number of samples
Bits = 2; % Number of bits for modulation (2-bit for Binary modulation)
data = randi([0 1],1,N); % Random signal
d = real(pskmod(data,Bits)); % BPSK Modulated signal (desired/output)
r = filter(h,1,d); % Signal after passing through channel
x = awgn(r, SNRr); % Noisy Signal after channel (given/input)
%% LMS parameters
epoch = 10; % Number of epochs (training repetation)
eta = 1e-3; % Learning rate / step size
order=10; % Order of the equalizer
U = zeros(1,order); % Input frame
W = zeros(1,order); % Initial Weigths
%% Algorithm
for k = 1 : epoch
for n = 1 : N
U(1,2:end) = U(1,1:end-1); % Sliding window
U(1,1) = x(n); % Present Input
y = (W)*U'; % Calculating output of LMS
e = d(n) - y; % Instantaneous error
W = W + eta * e * U ; % Weight update rule of LMS
J(k,n) = e * e'; % Instantaneous square error
end
end
答案 0 :(得分:1)
让我们一步一步地开始:
首先,使用某种拟合方法时,最好使用RMS error。为此,我们必须在输入和输出之间找到错误。据我所知,x
是我们模型的输入,y
是输出。此外,您已计算出它们之间的误差。但你在循环中使用它而不保存。让我们修改你的代码:
%% Algorithm
for k = 1 : epoch
for n = 1 : N
U(1,2:end) = U(1,1:end-1); % Sliding window
U(1,1) = x(n); % Present Input
y(n) = (W)*U'; % Calculating output of LMS
e(n) = x(n) - y(n); % Instantaneous error
W = W + eta * e(n) * U ; % Weight update rule of LMS
J(k,n) = e(n) * (e(n))'; % Instantaneous square error
end
end
现在e
包含上一纪元的错误。所以我们可以使用这样的东西:
rms(e)
此外,我想使用平均误差和标准差来比较结果:
mean(e)
std(e)
还有一些可视化:
histogram(e)
第二时刻:我们不能仅仅为向量使用compare
函数!您可以将其用于dynamic system models。为此,您必须解决使用此方法作为动态模型的问题。但我们可以使用一些函数作为goodnessOfFit。如果你想在每一步考虑所有先前数据点的错误之类的东西,那么做一些数学解决方法 - 使用[1:currentNumber]在每个点计算它。
关于使用LMS方法。有内置函数计算LMS。让我们尝试将它用于您的数据集:
alg = lms(0.001);
eqobj = lineareq(10,alg);
y1 = equalize(eqobj,x);
让我们看看结果:
plot(x)
hold on
plot(y1)
这个函数的实现有很多例子:例如here。
我希望这对你有所帮助!
答案 1 :(得分:-1)
模型输出与观测数据的比较称为残差。
因变量的观测值之间的差异 (y)和预测值(ŷ)称为残差(e)。每个数据 点有一个残差。
Residual = Observed value - Predicted value e = y - ŷ
残差的和和均等于零。那是, Σe= 0且e = 0.
残差图是显示垂直上残差的图表 轴和水平轴上的自变量。如果 残差图中的点随机分散在水平线周围 轴,线性回归模型适用于数据; 否则,非线性模型更合适。
以下是来自我的模型的残差图的示例。纵轴是模型输出与测量值之间的差值。横轴是模型中使用的独立变量之一。
我们可以看到大多数残差在0.2个单位内,这恰好是我对这个模型的容忍度。因此,我可以对模型的价值做出结论。
有关类似问题,请参阅here。
关于模型输出中缺少噪音的问题。我们正在创建一个线性模型。有线索。