WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Zwei mal linear interpolieren

 

Gast am Sonntag

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.04.2014, 15:43     Titel: Zwei mal linear interpolieren
  Antworten mit Zitat      
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)
   
    field(1,:,i) = time_new(i);      % Zeitpunkt
    field(2,:,i) = z;                % Koordinate
    field(3,:,i) = data_new(i,:);    % Wert
   
end
 

Danke und schöne Grüße


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.04.2014, 16:52     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
aber irgendetwas stimmt an meinen Resultaten nicht

Und was?

Bitte das Problem möglichst genau beschreiben und möglichst auch Daten zur Verfügung stellen, damit das Problem reproduzierbar ist.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast am Sonntag

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.04.2014, 18:24     Titel:
  Antworten mit Zitat      
Hallo,

hier sind Daten zum Testen:

Code:

cord = linspace(-200,200,50);
DATA = 500-randn(50,50)*100;
time = 0:1:49;
 

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.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.04.2014, 19:39     Titel:
  Antworten mit Zitat      
Hallo,

zunächst mal läuft der Code ja fehlerfrei durch.

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
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast am Sonntag

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2014, 08:38     Titel:
  Antworten mit Zitat      
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.
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.