Using polyfit and polyval functions with data
1 次查看(过去 30 天)
显示 更早的评论
I've been using the polyfit and polyval functions recently and I would like to approximate data between 2 vectors but I'm wondering if Ive made a mistake somewhere.
If
a=[1;2;3;4;5;nan;6;nan;nan;10];%prices with data missing
b=[1;2;3;4;5;6;6;7;8;10]; %original prices
days=[1;2;3;4;5;6;7;8;9;10]%number of days
NotMissing=~isnan(a(:,1));
p=a(NotMissing,1); %prices with data not missing
days=a(NotMissing,1);
pf=polyfit(days,p,1);
pv=polyval(pf,days); %polyval approximation of length 7 compared to b which has length 10
%I've want to calculate the mean square error between the approximate prices pv and the original prices using
%E = sqrt( sum( (b-pv).^2) / numel(b) );
Have I made a mistake using the polyval function, in this case I cannot calcuate E because the vectors are different lengths so I'm wondering if Im using the polyfit and polyval functions incorrectly because my length is being reduced by the number of nan values. Or am I 'calculating the error ' between the 2 vectors incorrectly
0 个评论
采纳的回答
Matt J
2019-11-17
编辑:Matt J
2019-11-17
To do what you were after in your post, you need to fit with the NotMissing data, but then apply the fit at all days,
a=[1;2;3;4;5;nan;6;nan;nan;10];%prices with data missing
b=[1;2;3;4;5;6;6;7;8;10]; %original prices
days=[1;2;3;4;5;6;7;8;9;10];%number of days
NotMissing=~isnan(a);
pf=polyfit(days(NotMissing),a(NotMissing),1);
pv=polyval(pf,days)
更多回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!