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

cftool Funktion entnehmen

 

Wetterfritze
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 20.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.11.2011, 18:30     Titel: cftool Funktion entnehmen
  Antworten mit Zitat      
Hi,

kenne mich leider nicht so gut mit Matlab aus. Sorry, wenn die Frage etwas blöd ist:
Ich habe mit cftool eine eigene Ausgleichsfunktion f(x) = a*(sin(x - pi/2)) + c erstellt, die auch super aussieht.
Ich möchte diese Ausgleichsfunktion jetzt gerne auf alle meine Messwerte loslassen, aber ich verstehe nicht, wie ich dadran komme.(Also a und c für jede Messzeile)

Vielen Dank!
Private Nachricht senden Benutzer-Profile anzeigen


Wetterfritze
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 20.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2011, 10:16     Titel:
  Antworten mit Zitat      
also an die Funktion zu kommen ist kein Problem, aber ich brauche halt die Koeffizienten. Ich habe die Funktion einfach mal "sinus" genannt und dachte mit [a,b]=sinus(x,y); bekäm ich a und c raus, aber das geht leider nicht.
Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 24.11.2011, 10:18     Titel:
  Antworten mit Zitat      
Genauso wie man ein "cfit" Objekt erstellen kann, kann man das auch mittels "save session" aus dem GUI heraus speichern.

Die Hilfe zu "cfit" hat auch ein Beispiel wie man das "cfit" Object auf Daten anwenden kann.

Code:

f = fittype('a*x^2+b*exp(n*x)')
f =
     General model:
       f(a,b,n,x) = a*x^2+b*exp(n*x)
c = cfit(f,1,10.3,-1e2)
c =
     General model:
       c(x) = a*x^2+b*exp(n*x)
     Coefficients:
       a =           1
       b =        10.3
       n =        -100
 


Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 24.11.2011, 10:19     Titel:
  Antworten mit Zitat      
In dem Beispiel kommt man dann so an die Koeffizienten:
Code:

f = fittype('a*x^2+b*exp(n*x)')
c = cfit(f,1,10.3,-1e2)
c.a
c.b % usw
 


Andreas

Zuletzt bearbeitet von Andreas Goser am 24.11.2011, 10:23, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 24.11.2011, 10:21     Titel:
  Antworten mit Zitat      
Sorry die ANWENDUNG erfolgt dann mit "fit".
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Wetterfritze
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 20.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2011, 13:06     Titel:
  Antworten mit Zitat      
Wenn ich das richtig seh oder versteh, gibst du die Koeffizieten ja selbst ein, oder?
Ich möchte diese ja berechnet haben, wie er es beim cftool auch macht.
Ein Konkretes Beispiel:
Code:
function sinus(x,y)
% Data from data set "y vs. x":
%     X = x:
%     Y = y:
%     Unweighted

% Auto-generated by MATLAB on 24-Nov-2011 09:43:05

% Set up figure to receive data sets and fits
f_ = clf;
figure(f_);
set(f_,'Units','Pixels','Position',[654 271 680 481]);
% Line handles and text for the legend.
legh_ = [];
legt_ = {};
% Limits of the x-axis.
xlim_ = [Inf -Inf];
% Axes for the plot.
ax_ = axes;
set(ax_,'Units','normalized','OuterPosition',[0 0 1 1]);
set(ax_,'Box','on');
axes(ax_);
hold on;

% --- Plot data that was originally in data set "y vs. x"
x = x(:);
y = y(:);
h_ = line(x,y,'Parent',ax_,'Color',[0.333333 0 0.666667],...
    'LineStyle','none', 'LineWidth',1,...
    'Marker','.', 'MarkerSize',12);
xlim_(1) = min(xlim_(1),min(x));
xlim_(2) = max(xlim_(2),max(x));
legh_(end+1) = h_;
legt_{end+1} = 'Schub auf Beta';

% Nudge axis limits beyond data limits
if all(isfinite(xlim_))
    xlim_ = xlim_ + [-1 1] * 0.01 * diff(xlim_);
    set(ax_,'XLim',xlim_)
else
    set(ax_, 'XLim',[-0.015707963267948967, 1.5865042900628454]);
end

% --- Create fit "fit 1"
ok_ = isfinite(x) & isfinite(y);
if ~all( ok_ )
    warning( 'GenerateMFile:IgnoringNansAndInfs',...
        'Ignoring NaNs and Infs in data.' );
end
ft_ = fittype({'(sin(x - pi/2))', '1'},...
    'dependent',{'y'},'independent',{'x'},...
    'coefficients',{'a', 'c'});

% Fit this model using new data
cf_ = fit(x(ok_),y(ok_),ft_);
% Alternatively uncomment the following lines to use coefficients from the
% original fit. You can use this choice to plot the original fit against new
% data.
%    cv_ = { 7.232888513276353, 50.795238140574959};
%    cf_ = cfit(ft_,cv_{:});

% Plot this fit
h_ = plot(cf_,'fit',0.95);
set(h_(1),'Color',[1 0 0],...
    'LineStyle','-', 'LineWidth',2,...
    'Marker','none', 'MarkerSize',6);
% Turn off legend created by plot method.
legend off;
% Store line handle and fit name for legend.
legh_(end+1) = h_(1);
legt_{end+1} = 'fit 1';

% --- Finished fitting and plotting data. Clean up.
hold off;
% Display legend
leginfo_ = {'Orientation', 'vertical', 'Location', 'NorthEast'};
h_ = legend(ax_,legh_,legt_,leginfo_{:});
set(h_,'Interpreter','none');
% Remove labels from x- and y-axes.
xlabel('Beta')
ylabel('Schub')

 

und dann meine Eingangswerte:
Code:
W=0   43,4284953079228
0   43,4284953079228
0   43,4284953079228
0   43,4284953079228
0   43,4284953079228
0   43,4284953079228
0   43,4284953079228
0   43,4284953079228
0,0872664625997165   43,1273059817422
0,0872664625997165   43,1273059817422
0,0872664625997165   43,1273059817422
0,0872664625997165   43,1273059817422
0,174532925199433   43,4921093226372
0,174532925199433   43,4921093226372
0,174532925199433   43,4921093226372
0,174532925199433   43,4921093226372
0,174532925199433   43,4921093226372
0,174532925199433   43,4921093226372
0,349065850398866   43,7077767451876
0,349065850398866   43,7077767451876
0,349065850398866   43,7077767451876
0,349065850398866   43,7077767451876
0,523598775598299   44,7268013892355
0,523598775598299   44,7268013892355
0,523598775598299   44,7268013892355
0,523598775598299   44,7268013892355
0,523598775598299   44,7268013892355
0,523598775598299   44,7268013892355
0,523598775598299   44,7268013892355
0,872664625997165   46,6348373041813
0,872664625997165   46,6348373041813
0,872664625997165   46,6348373041813
0,872664625997165   46,6348373041813
0,872664625997165   46,6348373041813
0,872664625997165   46,6348373041813
0,872664625997165   46,6348373041813
0,872664625997165   46,6348373041813
1,22173047639603   49,3640611836692
1,22173047639603   49,3640611836692
1,22173047639603   49,3640611836692
1,22173047639603   49,3640611836692
1,22173047639603   49,3640611836692
1,22173047639603   49,3640611836692
1,39626340159546   49,1379347677142
1,39626340159546   49,1379347677142
1,39626340159546   49,1379347677142
1,39626340159546   49,1379347677142
1,39626340159546   49,1379347677142
1,39626340159546   49,1379347677142
1,39626340159546   49,1379347677142
1,39626340159546   49,1379347677142
1,39626340159546   49,1379347677142
1,39626340159546   49,1379347677142
1,39626340159546   49,1379347677142
1,57079632679490   50,5159987180233
1,57079632679490   50,5159987180233
1,57079632679490   50,5159987180233
1,57079632679490   50,5159987180233
1,57079632679490   50,5159987180233
1,57079632679490   50,5159987180233
1,57079632679490   50,5159987180233
 


jetzt möchte ich an "a" und "c"
Grüße
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.