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

Alternative zu interp1, 2 oder 3

 

Hiro
Forum-Anfänger

Forum-Anfänger



Beiträge: 23
Anmeldedatum: 10.12.08
Wohnort: ---
Version: RC2009a (7.7.0)
     Beitrag Verfasst am: 28.07.2009, 15:43     Titel: Alternative zu interp1, 2 oder 3
  Antworten mit Zitat      
Hallo Leute,

ich möchte interpolieren, kann aber nicht interp1 verwenden, da meine Vektoren quasiperiodisch sind. Ich druck sie hier mal nicht ab, sie umfassen je 1000 Werte.

Fehler 1:

Code:

hinfo=hdf5info('mars_orbital_parameters.hdf');

time_cont=hdf5read(hinfo.GroupHierarchy.Datasets(20))';

ls_cont=hdf5read(hinfo.GroupHierarchy.Datasets(7))';

final_t=interp1(time_cont,ls_cont,ls)';
 


Das Problem an dieser Stelle ist, dass "final_t" aus mir unerfindlichen Gründen kein Vektor, sondern nur ein einzelner Wert ist.


Fehler 2 erscheint bei folgenden Zeilen:

Code:

planetocentr_sun_lat=hdf5read(hinfo.GroupHierarchy.Datasets(14))';

time=hdf5read(hinfo.GroupHierarchy.Datasets(19))';

solar_distance=hdf5read(hinfo.GroupHierarchy.Datasets(18))';


Fehler wird ausgegeben mit:

Code:
Error using ==> interp1 at 261
The values of X should be distinct.

Error in ==> deddi at 75
solar_dist=interp1(solar_distance,time,times)';
 


"solar_distance" verursacht den Fehler, der Datensatz entstammt einer hdf5-Datei und ist daher vorgegeben. Das gleiche gilt für "time".
Private Nachricht senden Benutzer-Profile anzeigen


Idefix_1024
Forum-Century

Forum-Century


Beiträge: 230
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2009, 15:57     Titel:
  Antworten mit Zitat      
sicher dass
Code:

ein Vektor von Dir ist und keine Matlab funktion?

gib doch mal einen Mini-Vektor an mit dem Code den Du verwendest, dann probier ichs mal bei mir aus
Private Nachricht senden Benutzer-Profile anzeigen
 
Hiro
Themenstarter

Forum-Anfänger

Forum-Anfänger



Beiträge: 23
Anmeldedatum: 10.12.08
Wohnort: ---
Version: RC2009a (7.7.0)
     Beitrag Verfasst am: 29.07.2009, 13:38     Titel:
  Antworten mit Zitat      
"ls" ist eine meiner Eingabeparameter: ls = 150.
Die MatLab-Hilfe liefert mir das UNIX-Kommando ls, aber in meinem Code sollte es eigentlich keine Probleme geben. Zumindest scheint die Festsetzung von "ls" erfolgreich zu sein, aber ich habe "ls" sicherheitshalber in "sol_long" umbenannt.

Du meinst, ich soll einen kleinen Testvektor erstellen?

So in etwa

Code:

>> x=[0:0.05:10]'

>> y=[-1:0.1:19]'

>> z=5

>> yi=interp1(x,y,z)

yi =

     9

% oder

>>  yi=interp1(x,y,'linear')

yi =

       NaN
       NaN
       NaN
       NaN
       NaN
       NaN
       NaN
       NaN
       NaN
       NaN
       NaN
       NaN
       NaN
       NaN
       NaN
       NaN
       NaN
       NaN
       NaN
       NaN
         0
    0.0050
    0.0100
    0.0150
    0.0200
    0.0250
    0.0300
    0.0350
    0.0400
    0.0450
    0.0500
    0.0550
    0.0600
    0.0650
    0.0700
    0.0750
    0.0800
    0.0850
    0.0900
    0.0950
    0.1000
    0.1050
    0.1100
    0.1150
    0.1200
    0.1250
    0.1300
    0.1350
    0.1400
    0.1450
    0.1500
    0.1550
    0.1600
    0.1650
    0.1700
    0.1750
    0.1800
    0.1850
    0.1900
    0.1950
    0.2000
    0.2050
    0.2100
    0.2150
    0.2200
    0.2250
    0.2300
    0.2350
    0.2400
    0.2450
    0.2500
    0.2550
    0.2600
    0.2650
    0.2700
    0.2750
    0.2800
    0.2850
    0.2900
    0.2950
    0.3000
    0.3050
    0.3100
    0.3150
    0.3200
    0.3250
    0.3300
    0.3350
    0.3400
    0.3450
    0.3500
    0.3550
    0.3600
    0.3650
    0.3700
    0.3750
    0.3800
    0.3850
    0.3900
    0.3950
    0.4000
    0.4050
    0.4100
    0.4150
    0.4200
    0.4250
    0.4300
    0.4350
    0.4400
    0.4450
    0.4500
    0.4550
    0.4600
    0.4650
    0.4700
    0.4750
    0.4800
    0.4850
    0.4900
    0.4950
    0.5000
    0.5050
    0.5100
    0.5150
    0.5200
    0.5250
    0.5300
    0.5350
    0.5400
    0.5450
    0.5500
    0.5550
    0.5600
    0.5650
    0.5700
    0.5750
    0.5800
    0.5850
    0.5900
    0.5950
    0.6000
    0.6050
    0.6100
    0.6150
    0.6200
    0.6250
    0.6300
    0.6350
    0.6400
    0.6450
    0.6500
    0.6550
    0.6600
    0.6650
    0.6700
    0.6750
    0.6800
    0.6850
    0.6900
    0.6950
    0.7000
    0.7050
    0.7100
    0.7150
    0.7200
    0.7250
    0.7300
    0.7350
    0.7400
    0.7450
    0.7500
    0.7550
    0.7600
    0.7650
    0.7700
    0.7750
    0.7800
    0.7850
    0.7900
    0.7950
    0.8000
    0.8050
    0.8100
    0.8150
    0.8200
    0.8250
    0.8300
    0.8350
    0.8400
    0.8450
    0.8500
    0.8550
    0.8600
    0.8650
    0.8700
    0.8750
    0.8800
    0.8850
    0.8900
    0.8950
    0.9000
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Idefix_1024
Forum-Century

Forum-Century


Beiträge: 230
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2009, 15:23     Titel:
  Antworten mit Zitat      
jetzt kann ich schonmal sehen was du in etwa vor hast...

ich würde sagen Du musst das evtl so versuchen
Code:

x       = [0:0.05:10]'
y       = [-1:0.1:19]'
x_neu   = [0:0.01:10]';

y_neu   = interp1(x,y,x_neu, 'linear');

figure(1)
hold on
plot(x,y,'r','LineWidth',2)
plot(x_neu,y_neu,'b','LineWidth',1)
hold off
 


was soll denn interpoliert werden bei Dir??

Bei meinem Beispiel wird ein gegebener Datensatz mit x und y an den Stützstellen x_neu interpoliert.
Private Nachricht senden Benutzer-Profile anzeigen
 
Hiro
Themenstarter

Forum-Anfänger

Forum-Anfänger



Beiträge: 23
Anmeldedatum: 10.12.08
Wohnort: ---
Version: RC2009a (7.7.0)
     Beitrag Verfasst am: 05.08.2009, 15:30     Titel:
  Antworten mit Zitat      
Idefix_1024 hat Folgendes geschrieben:
was soll denn interpoliert werden bei Dir??


Benötigt werden zwei Vektoren ("solar_dec" und "solar_dist"), die die solare Deklination und den Abstand zur Sonne während des Berechnungsintervalls darstellen. Dies geschieht durch Interpolation an den Stützstellen des Vektors "times", der obiges Berechnungsintervall definiert.
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.