Info

This question is closed. Reopen it to edit or answer.

Trying to plot error

1 view (last 30 days)
rivaldo rivaldo
rivaldo rivaldo on 17 Apr 2018
Closed: MATLAB Answer Bot on 20 Aug 2021
I'm trying to run this code and get plot of the error as a function of epsilon but im getting blank plot, someone can help?
%
clear all;close all;clc
epsilon=0.0001;
X = randn(2,1000); % make some input data
w = [1;1]; % define a linear function
n = randn(1,1000)*0.1; % produce some noise
Y = w'*X + n; % produce outputs
% scatter3(X(1,:),X(2,:),Y);
for iteration = 1 : 500 %in practice: until stopping
%criterion satisfied
grad = 2*sum(repmat(w'*X-Y,size(X,1),1).*X,2);
w = w - epsilon * grad;
err = sum((Y - w'*X).^2) %just to check
end
plot(err,epsilon)
end

Answers (1)

Star Strider
Star Strider on 17 Apr 2018

You never change ‘epsilon’ in your code, so it remains a single scalar value. You need to create a vector from it if you want to plot with respect to it.

If you want to create a vector from ‘err’, subscript it:

err(iteration) = sum((Y - w'*X).^2); %just to check
  9 Comments
Star Strider
Star Strider on 18 Apr 2018
Please see my Answer and previous Comments.
You must create epsilon as a vector in order to plot with respect to it.
Try this:
epsilonv = ones(size(err))*epsilon; % Create Vector For ‘epsilon’
plot(epsilonv, err, 'p')
njj1
njj1 on 18 Apr 2018
Edited: njj1 on 18 Apr 2018
But epsilon is not changing.
What if you did this instead:
clear all;close all;clc
epsilon=0.0001:0.0001:0.0009; %nine entries into epsilon
X = randn(2,1000); % make some input data
w = [1;1]; % define a linear function
n = randn(1,1000)*0.1; % produce some noise
Y = w'*X + n; % produce outputs
numiterations = 500;
wv = zeros(numiterations , 2);
err =zeros(numiterations, 1);
for j = 1:numel(epsilon)
e = epsilon(j);
for iteration = 1:numiterations
grad = 2*sum(repmat(w'*X-Y,size(X,1),1).*X,2);
w = w - e * grad;
wv(iteration, :) = w;
err(iteration,j) = sum((Y - w'*X).^2); %just to check
end
end
plot(epsilon,err(end,:)); %plot err at the final iteration against epsilon

This question is closed.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!