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

Schleife über Fits

 

Anni

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2013, 10:19     Titel: Schleife über Fits
  Antworten mit Zitat      
Hallo zusammen,
hier erstmal mein Programm, die Datei ist einfach eine Textdatei mit zwei Spalten mit Zahlen, mit 107 Zeilen.
Code:
%
M=load('FluoreszenzProbe2Teilchen1.txt');
l=length(M);

v=185;


x2=zeros(l-1,l-1);
y2=zeros(l-1,l-1);

for j=1:l-1
   
for i=1:l-j
   x2(i,j)=((M(i+j,1)-M(i,1))*v).^2;
end

for i=1:l-j
    y2(i,j)=((M(i+j,2)-M(i,2))*v).^2;
end

r2=x2+y2;

end


p=zeros(l-1,l-1);
for j=1:l-1
    gesamt=l-j;
for i=1:l-j
   r=r2(i,j);
   n=1;
   for k=1:l-j;
       if r2(k,j)<=r
           n=n+1;
       end
   end
   
   p(i,j)=n/gesamt;
end
end

C=cell(1,l-1);
R=cell(1,l-1);
for j=1:l-1
c=zeros(l-j,1);
c(:,1)=1-p(1:l-j,j);
C{1,j}=c;
R{1,j}=r2(1:l-j,j);
end
 


So nun mein Problem. Ich habe jetzt ja die cell arrays C und R in deinen jeweils unterschiedlich lange Vektoren stehen. Was ich jetzt möchte sind exponentielle Fits der Form exp(a*x) (ohne Vorfaktor) mit Fitparamter a durch R{1,1} und C{1,1}, durch R{1,2} und C{1,2}, durch R{1,3} und C{1,3} und so weiter. Ich brauche also irgendwie eine Schleife während der in einen Vektor die ganzen Fit-Paramter geschrieben werden und am besten in einen anderen Vektor die Fehler. Hat dazu jemand eine Idee? Ich habe gestern schon so viel rumprobiert, mit allem möglichen, polyfit, nlinfit, fit, ich kenn mich im fitten bei Matlab aber auch nicht gut aus, vll mache ich es falsch. Problem ist auch, das der Rückgabewert des Fits häufig nciht der Parameter ist, sodass ich den nciht in meinen Vektor schreiben kann während der Schleife.
Ich hoffe mir kann jemand helfen, war gesten kurz vorm Durchdrehen, weil es eigentlich so simpel erscheint.
Viele Grüße,
Anni


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.07.2013, 17:41     Titel:
  Antworten mit Zitat      
Hallo,

ich würde das mit nlinfit machen. Bitte poste doch deinen Versuch mit nlinfit - darauf kann man dann sicher aufbauen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Anni

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2013, 18:13     Titel: nlinfit Versuch
  Antworten mit Zitat      
Danke erstmal für die Antwort Harald Smile Also das hatte ich mit nlinfit geschrieben:
Code:
%
fc = 'exp(-t*a)';
f  = inline(fc,'a','t');
a=zeros(l-1,1);
for j=1:l-1
    a(j,1)=nlinfit(R{1,j},C{1,j},f,1);
end
 

in meinem a stehen dann nur Einsen, also es steht immer das drin wa ich als letztes Argument bei nlinfit reinschreibe, hier also die 1. Verwende ich den Befehl falsch? Kann mir das nlinfit auch was über den Fehler sagen?
Anni
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.07.2013, 20:38     Titel:
  Antworten mit Zitat      
Hallo,

stehen denn in R und C auch wirklich die richtigen Daten drin?

Ich sehe nichts falsches daran. Wenn du mehr Fehlerdiagnostik haben möchtest, würde ich lsqcurvefit (besonders das 3. Rückgabe-Argument) statt nlinfit verwenden.

Es sollte zwar keinen Unterschied machen, aber ich würde auch von der veralteten inline-Syntax weggehen und Function Handles verwenden:

Code:
f = @(a,t) exp(-a*t)


Mehr kann ich nicht sagen ohne ein reproduzierbares Beispiel zu haben, d.h. inklusive Beispieldaten.

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