[英]MATLAB Simple - Linear Predictive Coding and Energy Forecasting
我有一个数据集,其中包含一个居民家庭每天使用的274个样本(9个月)的每日能量(Watts.hour)。 我不确定我是否正确应用了lpc函数。
我的代码如下:
filename='9-months.csv';
energy = csvread(filename);
C=zeros(5,1);
counter=0;
N=3;
for n=274:-1:31
w2=energy(1:n-1,1);
a=lpc(w2,N);
energy_estimated=0;
for X = 1:N
energy_estimated = energy_estimated + (-a(X+1)*energy(n-X));
end
w_real=energy(n);
error2=abs(w_real-energy_estimated);
counter=counter+1;
C(counter,1)=error2;
end
mean_error=round(mean(C));
作为分析中的样本“ n”,我将使用从1到n-1的能量数组的值来计算lpc系数(N = 3)。
之后,它将计算出的系数应用于给出的“ for”周期,以便计算出估计的能量。
最后,error2输出实际能量和估计值之间的误差。
在提供的示例( http://www.mathworks.com/help/signal/ref/lpc.html )上,使用了一些过滤器。 我需要对其应用任何过滤器吗? 我的方法正确吗?
提前非常感谢您!
LPC似乎已正确使用,但是关于代码还有其他一些事情。 我对他“为n”感到满意:
for n=31:274 %for me it would seem more logically to go forward in time
w2=energy(1:n-1,1);
a=lpc(w2,N);
energy_estimate=filter([0 -a(2:end)],1,w2);
energy_estimate=energy_estimate(end);
estimates(n)=energy_estimate;
end
error=energy(31:274)-estimates(31:274)';
meanerror=mean(error); %you dont really round mean errors
过滤器正是您要使用X = 1:N循环执行的操作。 但这将对整个w2向量执行计算。 如果只希望最后一个值,也可以使用(end)命令。
现在,没有理由为每个单个值计算误差,然后将它们添加到向量中,这样您就可以在计算后更快地做到这一点。
现在,如果您尝试使用lpc估算未来值,则可以像这样工作,但是您暗示每个值仅取决于最后三个值。 您是否尝试过多项式方法? 我认为这将更接近现实。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.