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

if-abfrage mit matrix

 

banana_2013

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2014, 21:23     Titel: if-abfrage mit matrix
  Antworten mit Zitat      
Guten Abend,

ich habe eine 250x360 matrix M mit Temperaturwerten. Die Temperaturwerte sind auf einen Gitter dargestellt, wobei die Zeilen (250) die Entfernung und die Spalten den Werte für den jeweiligen Winkel enthalten. Ich weiss, dass ist jetzt nicht so professionell ausgedrückt drum folgt ein Bsp: Ich habe an der Stelle M(25,80) = 25°, also in 25 km Entfernung und 80 Grad liegt die T bei 25 Grad.

Jetzt zu meinem Problem, ich möchte jetzt nur Werte berücksichtigen, die größer 5 sind. Bisher habe ich das so gemacht:

Code:

M = M(M>5);
 


Nur wenn ich das jetzt so mache, wandle ich meine Matrix in einen Vektor um, der alle Werte für die diese Bedingung zutrifft, enthält. Wenn es irgendwie möglich ist, möchte ich aber die Entfernungs- und Winkeabhängigkeit nicht verlieren. Ist das irgendwie möglich, dass ich die if-Abfrage mache, und die 'Lücken' quasi durch Interpolation auffülle?

Bin für jeden Tipp dankbar.
LG.
B


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2014, 22:00     Titel:
  Antworten mit Zitat      
hallo,

jetzt habe ich etwas herum probiert und bin zu folgender Lösung gekommen:

Code:

for i = 1:size(M,1);
    for j = 1:size(M,2);
        if M(i,j) < 5;
           M(i,j) = NaN;
        end
    end
end
 


So weit ich das richtig verstehe, müsste es passen.

Bleibt das Problem der Interpolation.
Dafür habe ich diesen Ansatz:

Code:

M(isnan(M)) = interp1(find(~isnan(M)),M(~isnan(M)), find(isnan(M)));
 


die Interpolation erfolgt Spaltenweise.
wenn ich mir die Matrix jetzt ausgeben lassen, sind zwar der Großteil der NaN werte weg, aber einige sind übrig geblieben. Bzw. gibt es eine bessere herangehensweise für die Interpolation?

Danke.
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 20.02.2014, 00:14     Titel:
  Antworten mit Zitat      
Hallo Anon,

Dies
Anonymous hat Folgendes geschrieben:
Code:
for i = 1:size(M,1);
    for j = 1:size(M,2);
        if M(i,j) < 5;
           M(i,j) = NaN;
        end
    end
end
 

kannst du ersetzen durch
Code:


Mit Interpolation kenn ich mich nicht aus.

Grüße,
Seban
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 20.02.2014, 09:45     Titel:
  Antworten mit Zitat      
Hallo,

das ist quasie das gleiche Problem wie hier http://www.gomatlab.de/2d-interpolation-mit-nan-t32315.html. Das müsste auch wieder mit griddata() funktionieren. Du suchst die gültigen Stellen (Temperatur > 5, bzw ."nicht NaN") raus und tust dann so, als hättets du nur diese Werte vorliegen. Die ungültigen Stellen (Temperatur < 5, bzw. durch NaN esetzt) werden dann mit Hilfe der gültigen Stellen wieder auf ein gemeinsames Gitter interpoliert.

Viele Grüße,
Nras.
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.