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

leasqr

 

emiliia88
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 21.04.15
Wohnort: München
Version: ---
     Beitrag Verfasst am: 21.04.2015, 08:17     Titel: leasqr
  Antworten mit Zitat      
Hallo liebe Mitgliede,
ich bin neu hier,aber ich versuche mein Problem deutlich zu beschreiben.
Also ich nutze Octave für die Auswertungen der Messungen für meine Masterarbeit.Bei Darstelllung eines Grafiks verläuft meine Kurve exponential.Aber ich muss noch eine Exponentialfunktion mit leasqr fitten um anzuschauen ob meine Messdaten vernünftige Werte liefern im vergleich mit der gefittete exponential funktion.Ich habe im internet diese Function File: leasqr (x, y, pin, F) gefunden.
x-Vector or matrix of independent variables.
y-Vector or matrix of observed values.
pin-Vector of initial parameters to be adjusted by leasqr.
F-Name of function or function handle. The function must be of the form y = f(x, p), with y, x, p of the form y, x, pin.
stol
Aber ich verstehe trotz nicht was ist das x,y,und pin.
Meine exponentialfunktion schaut so aus: F(t)=RH*A*(1-e^-(t-t0)/tau1+RH*(1-A)*(1-e^-(t-t0)/tau2
Ich habe 4 frei Parameter:
RH=100;A=0.92;t ist ein Zeitvektor;t0=300s
tau1=6s;tau2=300s
Hier ist mein Code:
Code:
%% model function:
F = @ (x, p) p(1)*p(2)*(1-exp(-((p3)-p(4))))/p(5)+p(1)*(1-p(2))*(1-exp(-((p3)-p(4))))/p(6)+p(7);
%% independents and dependents:
x = time_A1A2Ref(ind);
y = humi1_A1A2Ref_n;
%% initial values;
init = [100;.92;time_A1A2Ref(ind);300;6;300;10]

 %% start leasqr
 [f, p, cvg, iter] =leasqr (x, y, init, F);

Leide so funktioniert nicht.Kann mir jemand helfen wie es richtig ist?Oder andere Vorschläge geben?
Danke
Private Nachricht senden Benutzer-Profile anzeigen


emiliia88
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 21.04.15
Wohnort: München
Version: ---
     Beitrag Verfasst am: 21.04.2015, 10:47     Titel:
  Antworten mit Zitat      
Ich habe andere mein code geschrieben.
Aber ich bekomme trotz eine Fehlermeldung:
error: binary operator '+': invalid number of output arguments
error: called from:
error: at line -1, column -1
error: I:/Emiliia/Matlab Auswertungen Experimente\hhh.m at line 32, c
olumn 5
>>

So schaut mein Code aus:
Code:
%leasqr (x, y, pin, F)
leasqr = @ (t, p) p(1)*p(2)*(1-exp(-((t-p(3)))))/p(4)+p(1)*(1-p(2))*(1-exp(-((t-p(3)))))/p(5)+ p(6);
t = time_A1A2Ref(ind);
y = humi1_A1A2Ref_n(ind);
pin = [100;.92;300;6;300;10];
F = @ (t, p) p(1)*p(2)*(1-exp(-((t-p(3)))))/p(4)+p(1)*(1-p(2))*(1-exp(-((t-p(3)))))/p(5)+ p(6);
[f p]=leasqr(t,y,pin,F);

%F = 100*0.92*(1-exp(-((time_A1A2Ref(ind)-300))))/6 + 100*(1-0.92)*(1-exp(-((time_A1A2Ref(ind)-300))))/300 + 10
 

Was kann falsch sein,kann mir jemand helfen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.04.2015, 16:21     Titel:
  Antworten mit Zitat      
Hallo emiliia88,

Zitat:
error: I:/Emiliia/Matlab Auswertungen Experimente\hhh.m at line 32, column 5

Bitte zeige uns noch, welches die Zeile 32 ist. Denn der gezeigte code-Abschnitt hat keine 32 Zeilen.

Code:
% Hier hat leasqr zwei Inputs:
leasqr = @ (t, p) p(1)*p(2)*(1-exp(-((t-p(3)))))/p(4)+p(1)*(1-p(2))*(1-exp(-((t-p(3)))))/p(5)+ p(6);
...
% Hier hat leasqr 4 Inputs:
[f p]=leasqr(t,y,pin,F);

Merkwürdig.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
emiliia88
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 21.04.15
Wohnort: München
Version: ---
     Beitrag Verfasst am: 22.04.2015, 14:04     Titel:
  Antworten mit Zitat      
Hallo Jan,vielen dank für deine engangmo mir zu helfen.Also ichs kopiere ganzen cod,wenn ich plotte dann bekomme ich etwas was nicht ganz stimmt.Aber du hast mein Problem verstanden,was ich machen muss,ja?

Code:
clear all
close all
clc

A1A2Ref = dlmread('I:\Emiliia\Masterarbeit\Sprungantwort_Messungen\Polymer 2\temp2\A1_A2_Ref.csv','',5,0);
time_A1A2Ref  = A1A2Ref (:,1);

state_A1A2Ref = A1A2Ref(:,2);
humi1_A1A2Ref = A1A2Ref(:,3);
humi2_A1A2Ref = A1A2Ref(:,4);
humiRef_A1A2Ref = A1A2Ref(:,5);

Temp1_A1A2Ref   = A1A2Ref(:,6);
Temp2_A1A2Ref   = A1A2Ref(:,7);
TempRef_A1A2Ref  = A1A2Ref(:,8);

% Normierung (d.h Bits in % umrechnen) für A1_A2_Ref

ind = find(state_A1A2Ref);
time_A1A2Ref_n  = time_A1A2Ref - time_A1A2Ref(ind(1));
humi1_A1A2Ref_n = humi1_A1A2Ref - humi1_A1A2Ref(ind(1)-10);
humi2_A1A2Ref_n = humi2_A1A2Ref - humi2_A1A2Ref(ind(1)-10);
humi1_A1A2Ref_n = 100 * humi1_A1A2Ref_n / humi1_A1A2Ref_n(ind(end)-10);
humi2_A1A2Ref_n = 100 * humi2_A1A2Ref_n / humi2_A1A2Ref_n(ind(end)-10);

%% model function:
t=time_A1A2Ref(ind);
y=humi1_A1A2Ref_n(ind);
%plot(t,y);
pin = [ 100,0.92,300,6,300,0 ];
F = @(x, p) p(1)*p(2)*(1-exp(-((t-p(3)))))/p(4)+ p(1)*(1-p(2))*(1-exp(-((t-p(3)))))/p(5)+p(6);
 [f, p, cvg, iter, corp, covp, covr, stdresid, Z, r2] = leasqr (t, y, pin, F);
plot(t,y,f);


[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 23.04.2015, 13:08     Titel:
  Antworten mit Zitat      
Hallo emiliia88,

Bitte poste noch, welches die Zeile 32 ist.

Lass unbedingt das "clear all" weg. Dies löscht ohne Not eine große Menge an Details, leider auch die Breakpoints des Debuggers. Und das ist eine sehr schelchte Idee, denn gerade der Debugger würde Dir helfen, das Problem selbst zu untersuchen.

Wir können Deinen Code nicht laufen lassen, weil wir das Daten-File nicht haben.

Bitte poste nochmal alles, was mit diesem Fehler zusammenhängen könnte:

error: binary operator '+': invalid number of output arguments
error: called from:
error: at line -1, column -1
error: I:/Emiliia/Matlab Auswertungen Experimente\hhh.m at line 32, column 5

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
emiliia88
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 21.04.15
Wohnort: München
Version: ---
     Beitrag Verfasst am: 24.04.2015, 07:58     Titel:
  Antworten mit Zitat      
Hallo Jan.ich habe es geschafft.
Vielen Dank für eure Hilfe.
Jetzt habe ich anderes problem.
Ich muss mit der Funktion find bestimmte Werte finden um ein Grafik darzustellen.
Ich habe Grafik hochgeladen.Wenn du ih siehst,die Kurve verlauft esponentiel hoch und dann wieder runter.Ich muss Sprungantwort darstellen beim Ansteigen,also in erste 60 sek.Und noch ein Grafik bein Abfallen (im bereich 1800-1860 sek).Und hier habe ich Problem.Weil ich irgendwie nicht schaffe richtige werte mit find zu bestimmen.
Könntest du mit bitte helfen?

figure2.png
 Beschreibung:

Download
 Dateiname:  figure2.png
 Dateigröße:  39.33 KB
 Heruntergeladen:  731 mal
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.