0 Daumen
3,6k Aufrufe

Hallo liebe Community-Mitglieder,

ich habe leider noch wenig Erfahrung mit Matlab, möchte mir aber gerne eine Spline-Interpolation mit Werten, die in einer Excel-Tabelle stehen anzeigen lassen. Es sind tausende Stützstellen aber erstmal möchte ich das in einem kleinerem Intervall ausprobieren. Das Auslesen der Excel-Tabelle funktioniert mit (u.g.) schon ganz gut aber ich hätte es lieber direkt im Editor stehen.

[num txt]=xlsread('test.xls',1,'A1:A2') 
range=[ txt{1} ':' txt{2} ] 
daten=xlsread('test.xls',1,range)


Den Matlab Code habe ich von hier: https://autarkaw.org/2009/06/20/how-do-i-do-spline-interpolation-in-matlab/
Ist eine Spline-Interpolation mit so vielen Stützstellen überhaupt möglich?Und wenn ja, was gebe ich dazu ein?
Ich bedanke mich schon mal im Vorab für Eure Antworten.
LG Primzahl
von

2 Antworten

+1 Daumen

Du musst aus der Datei die x- und y-Werte als Array extrahieren. Grundsätzlich kann man eine Spline Interpolation mit sehr vielen Daten machen. Wenn man eine gute Anpassung an die vorgegebenen Daten  haben möchte ist das Verfahren ok. Allerdings ossiziliert die Kurve manchmal zwischen den Punkten und das bedeutet, dass man zusätzliche Frequenzanteile in der interpolierten Kurve erhält.

Besser kann sein, einen Smoothing Spline durch die Daten zu legen. Der geht nicht genau durch die Punkte, minimiert aber das quadratische Fehlermittel. Damit entstehen weniger zusätzliche Frequenzanteile.

Beispiel siehe hier

https://de.mathworks.com/help/curvefit/smoothing-splines.html

von 33 k

Und so sieht das aus. Einmal normaler Spline und einmal ein Smoothing Spline

Bild Mathematik

Ich habe Dein File entsprechend modifiziert:

%% HOW DO I DO THAT IN MATLAB SERIES?
% In this series, I am answering questions that students have asked
% me about MATLAB.  Most of the questions relate to a mathematical
% procedure.

%% TOPIC
% How do I do spline interpolation?

%% SUMMARY

% Language : Matlab 2008a;
% Authors : Autar Kaw;
% Mfile available at
% http://numericalmethods.eng.usf.edu/blog/interpolate_spline.m;
% Last Revised : June 20, 2009;
% Abstract: This program shows you how to do spline interpolation?
%          .
clc
clear all
clf

%% INTRODUCTION

disp('ABSTRACT')
disp('  This program shows you how to do spline interpolation?')
disp(' ')
disp('AUTHOR')
disp('  Autar K Kaw of http://autarkaw.wordpress.com')
disp(' ')
disp('MFILE SOURCE')
disp('  http://numericalmethods.eng.usf.edu/blog/interpolation_spline.m')
disp(' ')
disp('LAST REVISED')
disp('  June 20, 2009')
disp(' ')

%% INPUTS
% y vs x data to interpolate
% x data
x=[-1  -0.75  -0.5  -0.25  0.25  0.50 0.75  1];
% ydata
y=[-0.5  -0.5  -0.5  -0.5  0.5  0.5  0.5  0.5];
% Where do you want to interpolate at
xin=x;
%% DISPLAYING INPUTS
disp('INPUTS')
disp('The x data')
x
disp('The y data')
y
disp('The x values where you want to find the interpolated values')
xin
disp('  ')

%% THE CODE
% Fitting to spline - it is cubic splines
yin=spline(x,y,xin);
% This is only for plotting the spline interpolants
% Find the number of data points
n=length(x);
xplot=x(1):(x(n)-x(1))/10000:x(n);
yplot=spline(x,y,xplot);

x'
y'
f = fit(x',y','smoothingspline');

%% DISPLAYING OUTPUTS
disp('  ')
disp('OUTPUTS')
disp('x values at which function is to be interpolated')
xin
disp('y values at the xin values')
yin
xlabel('x');
ylabel('y');
title('y vs x ');

subplot(2,1,1);
plot(x,y,'o','MarkerSize',10,'MarkerEdgeColor','b','MarkerFaceColor','b')

hold on
plot(xin,yin,'o','MarkerSize',10,'MarkerEdgeColor','r','MarkerFaceColor','r')
hold on
plot(xplot,yplot,'LineWidth',2)
legend('Points given','Points found','Spline Curve','Location','East')
hold off
disp('  ')

subplot(2,1,2);
plot(f,x',y');

+1 Daumen

Es sind tausende Stützstellen

Kann Excel die Werte auch in einer Grafik anzeigen ?
Dann bitte einstellen ?

Müssen alle Stützstellen exakt getroffen werden
oder soll eine Ausgleichsfunktion ermittelt
werden z.B. für Meßwerte bei denen Meßunge-
naugkeiten vorhanden sind ?

von 111 k 🚀

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

0 Daumen
1 Antwort
0 Daumen
0 Antworten
0 Daumen
1 Antwort

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community