我想了解功能 polyval 和 polyfit 。 首先,我在Matlab中进行以下编程:
x = (0:.01:95)/180*pi;
y = polyval(cooefs_w_0(end:-1:1), x);
[p,~,mu] = polyfit(y, x, 5);
我的第一个问题是:如果我编写此行,polyfit的结果将不相同:
p = polyfit(y, x, 5);
为什么?变量 p 必须相同。
答案 0 :(得分:2)
3rd
输出参数将自变量更改为
y
到
normalized_y = (y-means(y))/std(y)
这称为归一化,新的normalized_y
将0
作为平均值,将1
作为标准偏差
为什么要归一化?
y
可以适合高斯分布,则将得出更好多项式系数
比非归一化方法估算y
,因为归一化方法给出的结果与非归一化方法 证明 [p, ~mu] = polyfit(...)
使用规范化输入
% I increase the step to make the plot clear
x = (0:5:95)/180*pi;
cooefs_w_0 = [1,4, 5, 9];
y = polyval(cooefs_w_0(end:-1:1), x);
% y normalization
normalized_y = (y-mean(y))/std(y);
[p,~,mu] = polyfit(y, x, 5);
% polyfit with one output argument but input changed to the normalized y
p_normalized = polyfit(normalized_y, x, 5);
% Check if the coefficients are the same
isequal(p, p_normalized);
% ans =
logical
1
使用 x
polyval()
p_original = polyfit(y, x, 5);
original_prediction = polyval(p_original, y);
y
指定的自变量mu
的真实均值和标准差[p,~,mu] = polyfit(y, x, 5);
normalized_prediction = polyval(p, y, [], mu);
由于y
不能很好地拟合高斯分布,因此这两个估计值相似但不完全相同
图表