How to plot the distance between two curves
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
David Sicic
am 26 Sep. 2023
Bearbeitet: Mario Malic
am 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 Kommentare
Akzeptierte Antwort
Mario Malic
am 26 Sep. 2023
Bearbeitet: Mario Malic
am 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 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Biological and Health Sciences finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
