This solution is outdated. To rescore this solution, sign in.
Test | Status | Code Input and Output |
---|---|---|
1 | Pass |
%%% first test: fit to a constant
x = [1,2,3,4]';
y = rand(4,1);
f{1} = @(x) ones(size(x));
aref=mean(y);
assert(norm(fit_coefficients(f,x,y)-aref)<1e-6)
|
2 | Pass |
%%% second test: fit to a straight line (linear regression)
x = [1,2,3,4,5]' + randn(5,1);
y = [1,2,3,4,5]' + randn(5,1);
f{1} = @(x) ones(size(x));
f{2} = @(x) x;
aref(2) = sum((x-mean(x)).*(y-mean(y)))/sum((x-mean(x)).^2);
aref(1) = mean(y)-aref(2)*mean(x);
assert(norm(fit_coefficients(f,x,y)-aref')<1e-6)
|
3 | Pass |
%%% third test: polynomial fit
x = [1:10]' + randn(10,1);
y = -10+0.2*x-0.5*x.^2+0.4*x.^3+0.001*log(x) + 0.2*randn(10,1);
f{1} = @(x) ones(size(x));
f{2} = @(x) x;
f{3} = @(x) x.^2;
f{4} = @(x) x.^3;
aref = fliplr(polyfit(x,y,3));
assert(norm(fit_coefficients(f,x,y)-aref')<1e-6)
|
4 | Pass |
%%% fourth test: non-polynomial fit (yes, we are that crazy)
x = [0:0.1:2*pi]';
y = 0.123 + 0.456*sin(x).*exp(0.1*x);
f{1} = @(x) ones(size(x));
f{2} = @(x) sin(x).*exp(0.1*x);
aref=[0.123 0.456]';
assert(norm(fit_coefficients(f,x,y)-aref)<1e-6)
|
1365 Solvers
Create matrix of replicated elements
321 Solvers
250 Solvers
404 Solvers
424 Solvers
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!