How to plot the distance between two curves
4 views (last 30 days)
Show older comments
Hey,
I have a question regarding the distance between two curves, i want to plot the distance between these curves like shown in the picture below

This is my code:
% Gegebene Daten
x = [29.069, 44.395, 59.528, 74.76, 90.036, 150];
y = [0.07091, 0.076187, 0.081665, 0.087588, 0.093687, 0.1197];
% Quadratische Regression
quadratic_coefficients = polyfit(x, y, 2); % Quadratisches Polynom (ax^2 + bx + c)
% Lineare Regression
linear_coefficients = polyfit(x, y, 1); % Lineare Funktion (mx + b)
% Erzeugen Sie x-Werte für die Auswertung am letzten Punkt
x_last_point = x(end);
% Berechnen Sie die y-Werte für die quadratische und lineare Anpassung am letzten Punkt
y_quadratic_last_point = polyval(quadratic_coefficients, x_last_point);
y_linear_last_point = polyval(linear_coefficients, x_last_point);
% Berechnen Sie den Abstand zwischen den beiden Kurven am letzten Punkt
distance_at_last_point = abs(y_quadratic_last_point - y_linear_last_point);
% Plot der quadratischen und linearen Anpassungen und der gegebenen Daten
x_values = linspace(min(x), max(x), 1000);
y_quadratic = polyval(quadratic_coefficients, x_values);
y_linear = polyval(linear_coefficients, x_values);
figure;
plot(x, y, 'o', 'MarkerSize', 8, 'MarkerFaceColor', 'b', 'MarkerEdgeColor', 'b');
hold on;
plot(x_values, y_quadratic, '-r', 'LineWidth', 2);
plot(x_values, y_linear, '-g', 'LineWidth', 2);
xlabel('X-Achse');
ylabel('Y-Achse');
title('Quadratische und Lineare Anpassungen der Daten');
legend('Datenpunkte', 'Quadratische Anpassung', 'Lineare Anpassung');
grid on;
hold off;
% Quadratische Abweichung (residuale Summe der Quadrate) für die quadratische Anpassung
residuals_quadratic = y - polyval(quadratic_coefficients, x);
quadratic_deviation = sum(residuals_quadratic.^2);
% Lineare Abweichung (residuale Summe der Quadrate) für die lineare Anpassung
residuals_linear = y - polyval(linear_coefficients, x);
linear_deviation = sum(residuals_linear.^2);
% Geben Sie die quadratische und lineare Abweichung aus
fprintf('Quadratische Abweichung: %.6f\n', quadratic_deviation);
fprintf('Lineare Abweichung: %.6f\n', linear_deviation);
% Geben Sie den Abstand zwischen den beiden Kurven am letzten Punkt aus
fprintf('Abstand zwischen den Kurven am letzten Punkt: %.6f\n', distance_at_last_point);
0 Comments
Accepted Answer
Mario Malic
on 26 Sep 2023
Edited: Mario Malic
on 26 Sep 2023
% Gegebene Daten
x = [29.069, 44.395, 59.528, 74.76, 90.036, 150];
y = [0.07091, 0.076187, 0.081665, 0.087588, 0.093687, 0.1197];
% Quadratische Regression
quadratic_coefficients = polyfit(x, y, 2); % Quadratisches Polynom (ax^2 + bx + c)
% Lineare Regression
linear_coefficients = polyfit(x, y, 1); % Lineare Funktion (mx + b)
% Erzeugen Sie x-Werte für die Auswertung am letzten Punkt
x_last_point = x(end);
% Berechnen Sie die y-Werte für die quadratische und lineare Anpassung am letzten Punkt
y_quadratic_last_point = polyval(quadratic_coefficients, x_last_point);
y_linear_last_point = polyval(linear_coefficients, x_last_point);
% Berechnen Sie den Abstand zwischen den beiden Kurven am letzten Punkt
distance_at_last_point = abs(y_quadratic_last_point - y_linear_last_point);
% Plot der quadratischen und linearen Anpassungen und der gegebenen Daten
x_values = linspace(min(x), max(x), 1000);
y_quadratic = polyval(quadratic_coefficients, x_values);
y_linear = polyval(linear_coefficients, x_values);
figure;
plot(x, y, 'o', 'MarkerSize', 8, 'MarkerFaceColor', 'b', 'MarkerEdgeColor', 'b');
hold on;
plot(x_values, y_quadratic, '-r', 'LineWidth', 2);
plot(x_values, y_linear, '-g', 'LineWidth', 2);
xlabel('X-Achse');
ylabel('Y-Achse');
title('Quadratische und Lineare Anpassungen der Daten');
legend('Datenpunkte', 'Quadratische Anpassung', 'Lineare Anpassung');
grid on;
hold off;
% Quadratische Abweichung (residuale Summe der Quadrate) für die quadratische Anpassung
residuals_quadratic = y - polyval(quadratic_coefficients, x);
quadratic_deviation = sum(residuals_quadratic.^2);
% Lineare Abweichung (residuale Summe der Quadrate) für die lineare Anpassung
residuals_linear = y - polyval(linear_coefficients, x);
linear_deviation = sum(residuals_linear.^2);
% Geben Sie die quadratische und lineare Abweichung aus
fprintf('Quadratische Abweichung: %.6f\n', quadratic_deviation);
fprintf('Lineare Abweichung: %.6f\n', linear_deviation);
% Geben Sie den Abstand zwischen den beiden Kurven am letzten Punkt aus
fprintf('Abstand zwischen den Kurven am letzten Punkt: %.6f\n', distance_at_last_point);
hold on;
plot([x_last_point, x_last_point], [y_quadratic_last_point, y_linear_last_point])
text(x_last_point, mean([y_quadratic_last_point, y_linear_last_point]), "\Delta" + num2str(abs(y_quadratic_last_point - y_linear_last_point)))
xlim([120, 160])
ylim([0.11 0.13])
2 Comments
More Answers (0)
See Also
Categories
Find more on Biological and Health Sciences in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!