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

Interpolatin von Messwerten

 

sto92
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2015, 12:11     Titel: Interpolatin von Messwerten
  Antworten mit Zitat      
Hallo zusammen,
als Matlabfrischling habe ich folgendes Problem:

ich habe auf einer Fläche 72*50=3600 Messpunkte. Diese sind wild verteilt. Soll heißen ich habe 3600 verschiedene x-Werte und 3600 y-Werte der Messpunkte.

Nun möchte ich aus den Messpunkten eine Kurve interpolieren, plotten und dann an festen (linearen) Punkten wieder auswerten.

Hat jemand eine Idee wie ich am besten vorgehe? Sämtliche Versuche mit Grids sind ohne Erfolg geblieben.

Viele Grüße und besten Dank für eure Mühe
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 20.10.2015, 12:16     Titel:
  Antworten mit Zitat      
Zitat:
Sämtliche Versuche mit Grids sind ohne Erfolg geblieben.

ohne den code zu den versuchen mit fehlermeldung und beispieldaten kann dir dabei leider keiner helfen. die antwort kann dann nur allgemein lauten mittels interpolation.
Zitat:
72*50=3600 Messpunkte. Diese sind wild verteilt. Soll heißen ich habe 3600 verschiedene x-Werte und 3600 y-Werte der Messpunkte.

das ist für mich ohne beispieldaten nicht verständlich.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
sto92
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2015, 16:18     Titel:
  Antworten mit Zitat      
Es geht mir eher um den Ansatz, weniger um den genauen Code.

Ich habe Verschiedene Messpunkte im Raum verteilt.
Nomralerweise hat man bei einer Messung auf einem Gitternetz zu einem Bestimmten x und y Wert einen z Wert in den Gitterknoten.

Im meinem Fall habe ich jedoch die Werte nicht in den Knoten eines regelmäßigen Gitters sondern unregelmäßig verteilt.

Meine Idee ist nun aus den Messpunkten eine 3D Funktion zu Interpolieren, und danach die interpolierte Funktion an regelmäßigen Punkten (Gitter) auszuwerten.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 20.10.2015, 16:32     Titel:
  Antworten mit Zitat      
Zitat:
3D Funktion zu Interpolieren

das versteh ich nicht. willst du eine funktion haben oder willst du interpolieren?
Zitat:
Sämtliche Versuche mit Grids sind ohne Erfolg geblieben.

wie gesagt ohne den code kann ich nicht sagen warum. wenn du schon alles durchprobiert hast bringt es ja nix hier nochmal die gleichen vorschläge zu machen. es wäre also einfacher wenn du beispieldaten zur verfügung stellst und den code der nicht zum gewünschten ergebniss führt. für mich hört sich das nämlich bis jetzt immernoch so an als würde griddata funktionieren.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
sto92
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2015, 08:43     Titel:
  Antworten mit Zitat      
Folgend mein Programm Code.

Error using griddata (line 109)
The lengths of X and Y must match the size of Z.


Code:
x_mess=[0.98 0.99 1.01 1.03 1.97 1.99 2.02 2.03 2.95 2.98 2.99 3.04 3.96 3.97 3.99 4.02];  % Messpunkte X
y_mess=[0.97 0.98 1.01 1.02 1.96 1.97 2.01 2.03 2.94 2.96 2.98 3.05 3.98 3.99 4.00 4.02];  % Messpunkte Y

z_mess=[1 3 5 9; 2 3 4 8; 1 2 4 7; 2 4 6 9]; % Werte der Messpunkte Z



x_int=linspace(-4,1,50);
y_int=x_int;
y_int=y_int(:);


[X,Y,Z]=griddata(x_mess,y_mess,z_mess,x_int,y_int,'cubic');
figure;
surf(X,Y,Z);
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 21.10.2015, 09:51     Titel:
  Antworten mit Zitat      
und wie hängen diese werte zusammen? wie die fehlermeldung schon sagt passen da die diemensionen nicht. woher soll matlab da wissen welcher Z-wert zu welchen x y paar gehört
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
sto92
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2015, 09:56     Titel:
  Antworten mit Zitat      
Das ist auch meine Frage. Wie kann ich Matlab denn mitteilen, dass x_1,y_1 zu z_1 ; x_1,y_2 zu z_2 gehören usw?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 21.10.2015, 10:07     Titel:
  Antworten mit Zitat      
Zitat:
Wie kann ich Matlab denn mitteilen, dass x_1,y_1 zu z_1 ; x_1,y_2 zu z_2 gehören usw?

wie gesagt ich kann aus deinem code nicht ersehen was z_2 ist. ist es 3? ist es 2? oder ganz was anderes?
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
sto92
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2015, 09:49     Titel:
  Antworten mit Zitat      
Also ich möchte eine Punktzuordnung (Beispiel)

z=1 x=0.5 y= 0.8
z=5 x=0.6 y= 1
z=4 x=0.8 y=1.2
z=8 x=0.9 y=1.3

Wie interpoliere ich nun aus diesen Daten?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 22.10.2015, 10:53     Titel:
  Antworten mit Zitat      
in deinen daten oben taucht weder 0.5 noch 0.8 auf. ich weis also immernoch nicht wie deine daten zusammen hängen.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
sto92
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2015, 10:55     Titel:
  Antworten mit Zitat      
Sorry ich habe nur ein Beispiel gemacht.
Mein Code sieht so aus

Code:

x_mess=[0.98 0.99 1.01 1.02 1.97 1.99 2.02 2.03 2.95 2.98 2.99 3.04 3.96 3.97 3.99 4.02];

y_mess=[0.97 0.98 1.01 1.02 1.96 1.97 2.01 2.03 2.94 2.96 2.98 3.05 3.98 3.99 4.00 4.02];  % Messpunkte Y

z_mess=[1 3 5 9 2 3 4 8 1 2 4 7 2 4 6 9;]; % Werte der Messpunkte Z



x_int=linspace(-4,5,50);
y_int=x_int;
y_int=y_int(:);


%[X,Y,Z]=prepareSurfaceData(x_mess,y_mess,z_mess);
%ft = 'cubic';

[X,Y,Z]=griddata(x_mess,y_mess,z_mess,x_int,y_int,'cubic');
figure;
surf(X,Y,Z);

 


Ich möchte also die Zuordnung x_1 : y_1 : z_1 usw.

Die müsste doch mit griddata zu machen sein?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 22.10.2015, 11:18     Titel:
  Antworten mit Zitat      
hmm du versucht zu extrapoliren. deine messwerte sind aber quasi nur auf der diagonalen. und davon auch noch sehr wenig. ich halte das nicht für sinnvoll egal was da rauskommt.
der code an sich ist nicht falsch. matlab schaft es blos nicht anhand deiner wenigen daten da cubisch zu interpoliren
wenn du aber zb nearest oder v4 machst kommt ein ergebniss raus. das ist wahrscheinlich nicht sinnvoll aber du hast auch nur wenig daten.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
sto92
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2015, 12:45     Titel:
  Antworten mit Zitat      
Habe es inzwischen hinbekommen

Code:
x = Region.Geometrie.Mittelpunkte(:,1);
y = Region.Geometrie.Mittelpunkte(:,2);
v = Region.Berechnungen.Flussdichte.Mittelpunkt.Bx(1,:);

[xq,yq]=meshgrid(-0.2:.0001:0.2,-0.2:0.0001:0.2);
vq= griddata(x,y,v,xq,yq);

figure
mesh(xq,yq,vq);
hold on;
plot3(x,y,v,'o');
grid on;

title('Interpolierte Flussdichte in x-Richtung')
xlabel('Mittelpunkte_x')
ylabel('Mittelpunkte_y')
zlabel('B_x')



 


Ich kann das Ergebnis auch schon plotten. Auf den Knotenpunkten des mesh-gitters erhalte ich nun meinen gesuchten Wert, der ja in der Matrix vq verbirgt. Wenn ich jedoch die Matrix im Workspace aufrufe stehen in den Elementen nur NaN. Weis jemand warum?
Private Nachricht senden Benutzer-Profile anzeigen
 
sto92
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2015, 15:57     Titel:
  Antworten mit Zitat      
Problem gelöst. Das Interpolationsgebiet darf nicht über die Gebietsgrenze hinausragen. Vielen Dank für den Support!!! Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 22.10.2015, 16:55     Titel:
  Antworten mit Zitat      
Zitat:
Das Interpolationsgebiet darf nicht über die Gebietsgrenze hinausragen

ja das nennt man extrapolieren. das hab ich oben aber schonmal erwähnt
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
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.