Azzera filtri
Azzera filtri

Help with plotting two lines.

1 visualizzazione (ultimi 30 giorni)
So I was given a set of x and y coordinates. We were asked to plot the set with a non-connecting points. Then to create a function that generates the best fit line for the list and plot it on the same chart which I did. But it ended up with a bunch of vertical lines connecting the data points and the best fit line together...(
(I've attached a picture)). How do I remove this? Here is my code if you need it for reference:
function cubicfit(x,y)
xp=x;
yp=y;
plot(xp,yp,'.')
xlabel('X data')
ylabel('Y data')
hold on
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
A=zeros(41,4);
for i=1:length(x)
A(i,1)=[((x(i))^3)];
end
for i=1:length(x)
A(i,2)=[((x(i))^2)];
end
for i=1:length(x)
A(i,3)=[((x(i))^1)];
end
for i=1:length(x)
A(i,4)=[((x(i))^0)];
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
c=(((A')*A)^-1)*((A')*y)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:length(x)
y(i)=((c(1)*(x(i)))^3)+((c(2)*(x(i)))^2)+((c(3)*(x(i))))+(c(4));
plot(x,y,'-')
end

Risposta accettata

Walter Roberson
Walter Roberson il 13 Nov 2017
In the sequence
for i=1:length(x)
y(i)=((c(1)*(x(i)))^3)+((c(2)*(x(i)))^2)+((c(3)*(x(i))))+(c(4));
plot(x,y,'-')
end
you are defining one new y value at a time, but you are plotting all the y values each time.
You need to postpone the plot to after the loop.
  1 Commento
Matthew Lozancich
Matthew Lozancich il 13 Nov 2017
Yuppp that was the problem. This literally gets me every time. Once again, thank you!

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su 2-D and 3-D Plots in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by