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

fittype nimmt modifizierte Funktion nicht an

 

MatLabNooB
Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.10.2010, 07:20     Titel: fittype nimmt modifizierte Funktion nicht an
  Antworten mit Zitat      
morgen!

kann mir einer helfen, wie ich folgendes hinbekomme

Code:
                   f = fittype('gauss3');
                    eq = formula(f);
                    answer =...
                        inputdlg(...
                        'b2',...
                        'FixValue',1);
                    val = str2double(answer{1});
                    eq = strrep(eq,'b2',num2str(val));
                    eq = strrep(eq,'b3',num2str(2*val));
                    f = fittype(eq);
 

im moment spuckt er mir eine Fehlermeldung aus

Zitat:
??? Error using ==> fittype.fittype>fittype.fittype at 466
Expression
a1*exp(-((x-b1)/c1)^2) + a2*exp(-((x-1)/c2)^2) +
a3*exp(-((x-2)/c3)^2) is not a valid MATLAB expression,
has non-scalar coefficients, or cannot be evaluated:
Error in fittype expression ==>
a1.*exp(-((x-b1)./c1).^2) + a2.*exp(-((x-1)./c2).^2) +
a3.*exp(-((x-2)./c3).^2)
??? Error: Expression or statement is incomplete or incorrect.


wenn ich mir den string aus eq jedoch ausgebe und aus der konsole kopiere geht es oO

Code:
f = fittype(['a1*exp(-((x-b1)/c1)^2) + a2*exp(-((x-1)/c2)^2) +',...
    'a3*exp(-((x-2)/c3)^2)'])


hatte es mal mit
Code:
oder
Code:
versucht, aber kein erfolg Sad
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: 14.10.2010, 12:35     Titel: Re: fittype nimmt modifizierte Funktion nicht an
  Antworten mit Zitat      
Hallo MatLabNooB,

Ich habe zwar die Data-Fitting-Toolbox nicht, aber wenn ich mir die Dokumentation durchlese, erscheint es mir, als müsstes Du noch 'coefficients' definieren. Woher soll FITTYPE sonst wissen, was a1, a2 und a3 ist. Oder?

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

Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.10.2010, 14:50     Titel:
  Antworten mit Zitat      
hallo Jan,

er erkennt die koeffizienten automatisch, er nimmt einfach jede buchstabenkombi ausser x an, also daran sollte es nicht liegen
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: 14.10.2010, 15:36     Titel:
  Antworten mit Zitat      
MatLabNooB,

dann schau Dir doch mal den Type der Variablen "eq" an:
Code:

Nebenbei würde ich allerdings den Matlab-Operator EQ nicht mit einer Variablen maskieren. EQ wird immer für die Ausdrücke wie "A==B" aufgerufen. Es ist schwierig abzuschätzen, welche Auswirkungen ein Überladen von Matlabfunktionen haben kann.

Versuche doch einfach mal den Debugger zu verwenden:
Code:

Dann stoppt Matlab sobald der Fehler erscheint. Dann schaue Dir doch einfach mal im Editor an, über welchen Test der String mit der Formel gestolpert ist.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.10.2010, 15:56     Titel:
  Antworten mit Zitat      
Hallo,

ich habe das Ganze einmal ausprobiert.
eq ist zwar ein Char-Array und die Formel ist auch enthalten, aber leider auch noch Zeichen wie Line Feed am Anfang. Diese Zeichen sorgen dann für die Fehlermeldung.
Ich habe einmal auf die schnelle die Zeichen entfernt, dann läuft Dein Code ohne Fehlermeldung.
Code:

eq_new = eq(eq>33);
 

Du solltest vielleicht noch genauer schauen, welche Zeichen die Probleme verursachen.

Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
MatLabNooB
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.10.2010, 05:08     Titel:
  Antworten mit Zitat      
vielen dank für die Hilfe!
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.