How to plot the distance between two curves
19 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
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!