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

Interpolation creates NaN

 

Fränzi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.09.2015, 14:05     Titel: Interpolation creates NaN
  Antworten mit Zitat      
Hei, I'm trying to interpolate over NaN in Matlab.
I have two instruments. Both are measuring in different time. The first (lets call it A) measures every 4 sec. The second one (call it B) measures every 30 sec. A is supposed to be my main instrument. Everything should be in the same time and height grinding as A.

Code:

% time formatting
A.dt           = round(nanmedian(diff(A.time_midnight)));
    A.base_time    = A.base_time/(3600*24)+datenum('01-Jan-1970 00:00:00');
    A.true_time    = A.time_offset./(3600*24)+A.base_time*ones(length(A.time_offset),1); % convert so using datevec on all file times is possible
    A.tvec         = datevec(A.true_time); % 6-col. time vector: [YYYY MM DD HH MM SS] (one line per timestep)
    A.time_decimal = A.tvec(:,4) + A.tvec(:,5)./60 + A.tvec(:,6)./3600; % convert times from Julian Day to decimal hour of the day
 


I do the same for instrument B.
To interpolate now the time and the height I use the following interpolation method

Code:

   B.bscatt_interp_profiles=zeros(length(B.height),length(A.time_decimal))
    for i=1:length(B.height)
        B.bscatt_interp_profiles(i,:)=interp1(B.time_decimal,B.bscatt(i,:),A.time_decimal);
    end
    B.bscatt_interp=zeros(length(A.height),length(A.time_decimal))
    for i=1:length(B.time_decimal)
        B.bscatt_interp(:,i)=interp1(B.height,B.bscatt_interp_profiles(:,i),A.height);
    end
 


If I do that I get everywhere NaN. I tried it with interp2 as well but I also got NaN thats why I tried to use the for loop.

Does anybody have a clue how to solve my problem? I would be glad!


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 11.09.2015, 15:35     Titel:
  Antworten mit Zitat      
interp1 is only for interpolation not for extraplolation. if your a.timedecimal ist not in the bounds of B.time_decimal it produces nans. that would be my guess without running code that produces the error
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Fränzi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.09.2015, 16:18     Titel:
  Antworten mit Zitat      
I hope I solved it...
I used the following loop

Code:

B.bscatt_interp_profiles=zeros(length(B.height),length(A.time_decimal))
    for i=1:length(B.height)
        B.bscatt_interp_profiles(i,:)=interp1(B.time_decimal,B.bscatt(i,:),A.time_decimal,'linear','extrap');
    end
    B.bscatt_interp=zeros(length(A.height),length(A.time_decimal))
    for i=1:length(B.time_decimal)
        B.bscatt_interp(:,i)=interp1(B.height,B.bscatt_interp_profiles(:,i),A.height,'linear','extrap');
    end
 


And the Matlab documentation says this:
Code:

vq = interp1(v,xq,method,extrapolation)
 

Isn't that possible?
 
Fränzi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.09.2015, 16:22     Titel:
  Antworten mit Zitat      
Sorry wrong description!

Code:

vq = interp1(x,v,xq,method,extrapolation) specifies a strategy for evaluating points that lie outside the domain of x. Set extrapolation to the string, 'extrap', when you want to use the method algorithm for extrapolation. Alternatively, you can specify a scalar value, in which case, interp1 returns that value for all points outside the domain of x.
 
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 11.09.2015, 18:19     Titel:
  Antworten mit Zitat      
hmm iam quite shure they added the extrapolation point Smile but yea extraplolation can work that way. kinda depending on your data.
_________________

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 - 2024 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.