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

Messwerte verschiedener Tage bearbeiten

 

BastiM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 15.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2013, 10:26     Titel:
  Antworten mit Zitat      
ok....

ich glaube ich habe jetzt die Lösung für das Problem.....

weiter mit Polyfit... Sad
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: 23.07.2013, 10:38     Titel:
  Antworten mit Zitat      
du kannst nicht einfach ein datum mit str2double in eine zahl wandeln. das datum ist ja keine zahl. welche zahl wäre denn "3und4"? das geht nicht. das ist zb einer der gründe warum ich in meinem daten einlese beispiele die daten konvertiert habe. damit hättest du ohne probleme rechnen können.
du musst jetzt nachträglich mit
Code:
arbeiten.
und wie ich bereits sagte solltest du poly nicht als variablen name benutzen
Private Nachricht senden Benutzer-Profile anzeigen
 
BastiM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 15.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2013, 11:05     Titel:
  Antworten mit Zitat      
klar, ich hab da auch schon nen anderen namen:

hab folgendes gemacht:

für x:

Code:


[dim_line,dim_row] = size(x_poly);

for i=1:1:dim_row

    for n=1:1:length(x_poly)
   
    c(n,i) =datenum(x_poly{n,i}, 'HH:MM:SS');  % datum als double speichern, für x- Laufvariable im polyfit
    end
   
   
  end

 


für y:
Code:


for i=1:1:dim_row

    for n=1:1:length(y_origin)
   
    d(n,i) =(y_origin{n,i});  % datum als double speichern, für y- Laufvariable im polyfit
    end
end

 



zum plotten:

Code:


plot(c,d); %% test obs geht!
hold on;
     datetick('x','HH:MM:SS')


 



dann plottet er mir schön die drei kurven, meine Messkurven die (wie oben mal erwähnt) spezielle bedinungen erfüllen:

perfekt soweit!!!!

So, und nun möchte ich aus meinen Daten

c: 288x3 double array ==> x,y repräsentieren also die drei zu erstellenden fit- kurven...
d: 288x3 double array

einen polyfit n-ten grades machen:

hab so angefangen:

Code:


  n=3;
   
    for i=1:1:dim_row
       

   
    fit(i,:) = polyfit(c(:,i),d(:,i),n);


    end


 


klar was ich damit gerne machen würde?

so....
also er schreibt mir, gemäß meinem Grad 3 ein double array, das dann folgendermaßen aussieht:

fit: 3x4

es stehen in jeder zeile (für meinen fall drei zeilen wegen drei zu fittender kurven) vier werte, die vier faktoren also für die funktion 3. grades

das wäre doch schon mal ganz schön! allerdings bringt matlab diverse warning meldungen:

Warning: Polynomial is badly conditioned. Add points with distinct X values, reduce the
degree of the polynomial, or try centering and scaling as described in HELP POLYFIT.
> In polyfit at 76
In Bauer_pv_webbox_ausgewertet_polyfitHolger at 211

Das ist der aktuelle Stand!
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: 23.07.2013, 11:26     Titel:
  Antworten mit Zitat      
nunja ich denke das kommt daher das deine x werte im bereich von 7e5 liegen. und dann aber nur um einige bereiche im wert von 1e-3 streuen.
das lässt sich schlecht berechnen. als lösung dafür könntest du zb überall
Code:
datenum('00:00:00','HH:MM:SS')

abzihen. mann kann datenumm aber glaube ich auch mit einem parameter dazu bringen das zu machen aber weiß grade nicht wie. dü könntest dann auch noch alle werte zum fitten mit 86000 multipliziergen um auf sekunden zu kommen. oder auf minuten je nachdem. ich hoffe du verstehst worum es geht. ich denke jedenfalls das es daran liegt.
nächste keine anmerkung.
Code:
dim_line,dim_row] = size(x_poly);

for i=1:1:dim_row

    for n=1:1:length(x_poly)
   
    c(n,i) =datenum(x_poly{n,i}, 'HH:MM:SS');  % datum als double speichern, für x- Laufvariable im polyfit
    end
   
   
  end

wenn du schon dim_line via size einfügst solltest du es auch benutzen anstatt length. die variante über dim_line geht immer. length giebt je nach größe von x_poly andere werte aus. sollte hier egal sein aber kann mal wichtig werden Smile ( length giebt immer die größere der beiden werte von size aus. darum arbeite ich immer mit size anstatt length. da weiß ich immer welche dimension jetzt gemeint ist, du musst auch dimline und so nicht anlegen du kannst auch size(xpoly,1) benutzen oder so
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2, 3

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.