Effacer les filtres
Effacer les filtres

How do I plot a polynomial equation and set of x-y coordinates on the same graph?

4 vues (au cours des 30 derniers jours)
I am trying to plot a polynmial and some x-y coordinates on the same graph. I need the coordinates to be visible and the lines to be distingushable from one another (eg. different colors).
Here is the measured data.
coefficients = [0.6252 -0.4165 0.1311 -0.0163 0.0009,-0.0000]
x = [2 5 8 11 14 20];
y = [0.20 0.29 0.44 0.50 0.66 0.56];

Réponse acceptée

Sam Chak
Sam Chak le 10 Mai 2024
Modifié(e) : Sam Chak le 10 Mai 2024
Edit: Your original polynomial coefficients are truncated. So, the polynomial cannot produce an accurate result.
%% data
x = [2 5 8 11 14 20];
y = [0.20 0.29 0.44 0.50 0.66 0.56];
%% polynomial coefficients
coefficients = [0.6252 -0.4165 0.1311 -0.0163 0.0009 -0.0000];
p = fliplr(coefficients)
p = 1x6
0 0.0009 -0.0163 0.1311 -0.4165 0.6252
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
format long
p = polyfit(x, y, numel(x)-1)
p = 1x6
-0.000018175582990 0.000901920438957 -0.016287722908091 0.131052812071305 -0.416499314128809 0.625240054869418
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
%% points generated by polynomial
xx = linspace(x(1), x(end), 181);
yy = polyval(p, xx);
%% plot results
plot(x, y, 'o', 'markersize', 10), hold on
plot(xx, yy), grid on, xlabel('x'), xlabel('y')
legend('data', 'polynomial', 'location', 'northwest')
  9 commentaires
Deleted User
Deleted User le 11 Mai 2024
Thank you for that! Sorry to bother you, but I have another question. I’m trying to plot another point on the polynomial. I know the x coordinate is 17.5, but I don’t know the y coordinate. Is there a way I could plot the x coordinate on the polynomial and use the information from the graph to figure out the y coordinate? This coordinate needs to be distinguished from the points (eg. different colour).
Sam Chak
Sam Chak le 11 Mai 2024
Modifié(e) : John Kelly le 20 Mai 2024
Hi
You can use the polyval() command in this case.
%% data
x = [2 5 8 11 14 20];
y = [0.20 0.29 0.44 0.50 0.66 0.56];
%% polynomial coefficients
p = polyfit(x, y, numel(x)-1)
p = 1x6
-0.0000 0.0009 -0.0163 0.1311 -0.4165 0.6252
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
%% points generated by polynomial
xx = linspace(x(1), x(end), 181);
yy = polyval(p, xx);
%% find y coordinate with given x coordinate
xpt = 17.5;
ypt = polyval(p, xpt)
ypt = 0.9379
%% plot results
plot(x, y, 'o', 'markersize', 10), hold on
plot(xx, yy), grid on, xlabel('x'), ylabel('y')
plot(xpt, ypt, 'p', 'markersize', 10, 'color', "#7E2F8E"), hold off
legend('data', 'polynomial', 'point', 'location', 'northwest')

Connectez-vous pour commenter.

Plus de réponses (1)

KSSV
KSSV le 10 Mai 2024
x = [2 5 8 11 14 20];
y = [0.20 0.29 0.44 0.50 0.66 0.56];
p = polyfit(x,y,3) ;
yi = polyval(p,x) ;
figure
hold on
plot(x,y,'r')
plot(x,yi,'b')
legend('data points','polynomial fit')

Catégories

En savoir plus sur Interpolation dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by