How to plot the distance between two curves
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
David Sicic
le 26 Sep 2023
Modifié(e) : Mario Malic
le 26 Sep 2023
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 commentaires
Réponse acceptée
Mario Malic
le 26 Sep 2023
Modifié(e) : Mario Malic
le 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 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Biological and Health Sciences dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
