Verfasst am: 13.04.2014, 15:43
Titel: Zwei mal linear interpolieren
Hallo,
ich habe einen kleinen Code, welcher zwei mal linear interpoliert. Zuerst werden Daten eingelesen (das Einlesen habe ich hier weggelassen), die Daten zwischen denen ich interpolieren möchte stehen in DATA, jede Zeile entspricht einem bestimmten Zeitpunkt, und jede Spalte einem bestimmten Ort. Zuerst möchte ich örtlich interpolieren, d.h. zwischen den einzelnen Spalten der DATA-Matrix, dann noch zeitlich, d.h. zwischen den einzelnen Zeilen der DATA-Matrix. Zuletzt wird das interpolierte Feld in eine 3-dim. Matrix verpackt.
Ich habe meinen Code eigentlich schon mehrfach geprüft. Meiner Meinung nach sollte das funktionieren, aber irgendetwas stimmt an meinen Resultaten nicht, und das liegt wahrscheinlich an den interpolierten Daten.
Vielleicht sieht jemand einen Fehler, hier mein Code:
Code:
n = 100; % Anzahl der Punkte für die örtlich interpoliert werden soll
z=linspace(-200,200,n)'; % Koordinaten für die interpoliert werden soll
time = inCell{1}; % Interpolationsstützstellen, zeitlich
DATA = cell2mat(inCell(indDat)); % Daten zwischen denen interpoliert werden soll Matrix size(time,1) * 100
CORD = cell2mat(inCell(indCor));
cord = CORD(1,:); % Koordinaten der eingelesenen Werte (Interpolationsstützstellen, örtlich)
p = 1:numel(time);
q = 1:0.5:numel(time);
time_new = (interp1(p,time,q))'; % definiere neue Zeitwerte für die interpoliert werden soll
field = zeros(3,n,size(time_new,1)); % Feld vordefinieren
data = zeros(size(time,1),size(z,1));
%
% interpoliere örtlich
%
for i=1:size(time,1)
data(i,:) = interp1(cord,DATA(i,:),z); % Interpolation für Ortskoordinate
end
%
% interpoliere für die neuen Zeitwerte
%
data_new = zeros(size(time_new,1),49);
for i=1:size(data,2)
d = interp1(time,data(:,i),time_new);
data_new(:,i) = d;
end
%
% beschreibe Feld in gewünschtem Format
%
for i=1:size(time_new,1)
Die interpolierten Daten werden in einer weiteren Programm-Sequenz verwendet, und die Endergebnisse des Hauptprogrammes sind nicht wie eigentlich zu erwarten. Ich vermute, dass das an meinen interpolierten Daten liegt, deshalb wollte ich euch fragen, ob an der Interpolation etwas auszusetzen ist.
Natürlich kann es sein, dass du bei einem der Interpolationsbefehle nicht die Argumente angegeben hast, die du angeben wolltest, aber woher sollen wir erahnen, was du wolltest?
Ich sehe keine Möglichkeit, dir da weiterzuhelfen, solange du nicht sagen kannst, was an den Ergebnissen nicht wie gewünscht ist.
Grüße,
Harald
Gast am Sonntag
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 14.04.2014, 08:38
Titel:
Hallo,
ich wollte nur wissen, ob die Interpolation an sich richtig umgesetzt ist, d.h. ob die Daten (die einzelnen Spalten) DATA für die vorgegebenen Werte in z richtig interpoliert werden, und dann die Daten, d.h. die einzelnen Zeilen von DATA richtig für die Werte in time_new interpoliert werden.
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.