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

Mehrere Strukturen auslesen zB per Schleife

 

monica
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2010, 02:31     Titel: Mehrere Strukturen auslesen zB per Schleife
  Antworten mit Zitat      
Hallo liebe MatLabber/Innen,

folgendes Problem:
ich habe eine Reihe von fits erstellt, dessen Resultate ja bekanntlich als Structure kommen:

Code:

for i=i
    type = fittype('power1'); % Gleichung y=ax^b
   
    % dynamischer Variablenname = Spaltenanzahl für Struktur für jeden Fit
    assignin ('base',['fit_' num2str(i)], fit(vec1,vec2(:,i),type));  
end
 


als Ergebnis erhalt ich die Strukturen fit_1, fit_2 fit_3 usw.

Wie kann ich diese Strukturen (mit einer Schleife?) auslesen, ohne jede einzeln manuell aufrufen zu müssen?

zB um das Konfidenzintervall zu berechnen:

Code:


for i=1:10
confid(i)=confint(fit_1)
confid(i)=confint(fit_2) %also um das irgendwie zu ersetzen durch %automatisches aufrufen?!
etc..
end
 


vielen Dank im Voraus!
Private Nachricht senden Benutzer-Profile anzeigen


Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 16.07.2010, 08:26     Titel:
  Antworten mit Zitat      
Hallo,

ich würde so machen:
Code:


confid=zeros(10,1);
for i=1:10
    struc=eval(['fit_' num2str(i)]);
    confid(i)=confint(struc);
   
end
 


gruss
_________________

Ein schlechter General ist besser als zwei gute.
Private Nachricht senden Benutzer-Profile anzeigen
 
monica
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2010, 10:42     Titel:
  Antworten mit Zitat      
Danke für den Tipp, leider funktionierts nicht ganz, ich vermute da der Befehl
Code:

confint()
 

als output eine 2x2 matrix hat

fehlermeldung:
Code:

???  In an assignment  A(I) = B, the number of elements in B and
 I must be the same.
 


wie kann ich das geschickt in eine matrix packen?
vielen Dank, ansonsten funktionierts super!
Private Nachricht senden Benutzer-Profile anzeigen
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 16.07.2010, 10:46     Titel:
  Antworten mit Zitat      
hallo

dann so vlt?:
Code:

confid=zeros(10,1);
for i=1:10
    struc=eval(['fit_' num2str(i)]);
    confid(:,:,i)=confint(struc);
   
end
 

_________________

Ein schlechter General ist besser als zwei gute.
Private Nachricht senden Benutzer-Profile anzeigen
 
monica
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2010, 10:54     Titel:
  Antworten mit Zitat      
sorry funzt leider nicht:

Code:


??? Subscripted assignment dimension mismatch.
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 16.07.2010, 11:01     Titel:
  Antworten mit Zitat      
hmm, erster fehler gefunden :
confid=zeros(10,1) entfernen natürlich
ich nehme an confint liefert jedes mal 2*2 matrix
sonst :
confid{i}=confint(struct).

Code:

for i=1:10
    struc=eval(['fit_' num2str(i)]);
    confid(:,:,i)=confint(struc);
   
end
 

_________________

Ein schlechter General ist besser als zwei gute.
Private Nachricht senden Benutzer-Profile anzeigen
 
monica
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2010, 11:13     Titel:
  Antworten mit Zitat      
klasse, es klappt! 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: 17.07.2010, 17:19     Titel: Re: Mehrere Strukturen auslesen zB per Schleife
  Antworten mit Zitat      
Hallo Monica,

ASSIGNIN und EVAL sind sehr fehlerträchtige Methoden um Variablen zu speichern und zu lesen. Man handlet sich damit oft schwer zu findende Fehler ein. Deshalb würde ich empfehlen, die Variablen gleich in einem Objekt zu speichern, z.B.:

Code:

for i = i  % Was soll das eigentlich heißen?!
    typeName = fittype('power1');  % TYPE ist ein Befehl
    X{i} = fit(vec1, vec2(:,i), typeName);
end
 

Jetzt kannst Du auf die einzelnen Variablen über X{i} zugreifen.
"type" ist übrigens ein Matlab-Befehl. Das Überschreiben mit einer Variable ist zwar möglich, es treten aber sehr oft Probleme auf, wenn Benutzer z.B. die Variable "sum" belegen, später aber eine Summe berechnen wollen.

Gruß, Jan
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.