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

Durch Regression Variablen aus Funktion ermitteln

 

hackhuebi
Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 28.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.11.2015, 17:32     Titel: Durch Regression Variablen aus Funktion ermitteln
  Antworten mit Zitat      
Hallo Leute,
ich beschäftige mich schon den ganzen Nachmittag mit der Lösungsgleichung durch Regression, aber ich bin leider vollkommen zu unfähig dafür. Meine Werte sind in der Matrix A gespeichert. Die erste Spalte enthält die Zeitwerte t in Sekunden, die Zweite die Messwerte in kN.

Nun möchte ich mit folgender Formel arbeiten: Ft=F0/(1+F1*t^N)
Ft, F0 und t sind bekannt.
F1 und N sollen über die Regression ermittelt werden.

Später würde ich auch gerne weitere Spalten mit Messwerten anfügen, die ebenfalls in die Regression eingehen sollen.


Nun beginnt aber mein Problem schon damit, wie ich die Regression in Matlab formuliere. Kann mir da bitte jemand helfen? Ich hatte schon folgendes probiert, aber damit kann Matlab nicht umgehen. Bitte gebt mir doch einen Denkanstoß

Gruß Julius


Code:
close all;

A= [76.3700   28.5492; 76.4200   28.5366; 76.4700   28.5432; 76.5100   28.5306; 76.5600   28.5060; 76.6100   28.4633;76.6600   28.4081;76.7100   28.3102;76.7600   28.1505;76.8100   28.0099;76.8600   27.8869;76.9100   27.8136;76.9600   27.7950;77.0100   27.7644;77.0600   27.7644;77.1100   27.7584;77.1600   27.7398;77.2100   27.7398;77.2600   27.7217;77.3100   27.7338;77.3600   27.7217;77.4100   27.7157;77.4600   27.7157;77.5100   27.7157;77.5600   27.7157;77.6100   27.703;77.6600   27.7031;77.7100   27.7031;77.7600   27.6971;77.8100   27.7031;77.8600   27.6850];
A= [A(:,1)-76.37 A(:,2)];


channel=1;
Ft=A(:,channel+1);
F0=A(1,2);
t=A(:,1);

 
%Ft=F0/(1+F1*t*exp(N));

stats::reg(Ft,F0,(F0/(1+F1*t*exp(N))),[t],[F1,N]);
 
Private Nachricht senden Benutzer-Profile anzeigen


hackhuebi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 28.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2015, 16:55     Titel:
  Antworten mit Zitat      
hat keiner ne Idee? Zur verbesserten Übersicht, folgender Code:

Code:
close all;

A= [76.3700   28.5492; 76.4200   28.5366; 76.4700   28.5432; 76.5100   28.5306; 76.5600   28.5060; 76.6100   28.4633;76.6600   28.4081;76.7100   28.3102;76.7600   28.1505;76.8100   28.0099;76.8600   27.8869;76.9100   27.8136;76.9600   27.7950;77.0100   27.7644;77.0600   27.7644;77.1100   27.7584;77.1600   27.7398;77.2100   27.7398;77.2600   27.7217;77.3100   27.7338;77.3600   27.7217;77.4100   27.7157;77.4600   27.7157;77.5100   27.7157;77.5600   27.7157;77.6100   27.703;77.6600   27.7031;77.7100   27.7031;77.7600   27.6971;77.8100   27.7031;77.8600   27.6850];
A= [A(:,1)-76.37 A(:,2)];


channel=1;
y=A(:,channel+1);
F0=A(1,2);
x=A(:,1);

 
%y=F0/(1+F1*x*exp(N));  %%Funktion
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

versuchs mal mit
Code:


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 28.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2015, 18:08     Titel:
  Antworten mit Zitat      
Danke, das hat mir schonmal geholfen und läuft auch soweit. Allerdings sind die Variablen irgendwie ziemlich unsinnig, wenn ich sie mal in diverse Wertepaare einsetze.

anbei mal die Datei mit der ich arbeite. Muss in .csv umbenannt werden.

Der Code:
Code:
if 1
    clear all;
     
    [file, path] = uigetfile('*.csv','Select the CSV-File to Plot');
    % fileAndPath=[PathName FileName];
    fileAndPath=[path file];
    load(fullfile(path,file))
    data=dlmread(fileAndPath, ',');
end
close all;
x=data(:,1)/3600;

ymat=data(:,2:11);
temp=data(:,12);

cal_scale=[ 5.0211 5.0902 5.0833 5.0477 5.0854 5.0640 5.0477 5.1212 5.0147 5.0367];
cal_offs=[0.1644 -0.4344 -0.2917 +0.0035 -0.3814 -0.2017 -0.0117 -0.4534 -0.0246 -0.1738];
nr=size(ymat,1);
ymat=ymat.*repmat(cal_scale,nr,1)+repmat(cal_offs,nr,1);

A=[x ymat temp];

tstep=(A(3,1)-A(2,1))*3600;   % time step in seconds
t=2.0/tstep;                    % index of reference time
m=160*3600*2;

[maxwerte_, maxzeil_] = max(A(:,2:11));
maxzeil_=maxzeil_+t;

channel=1;
y=A(maxzeil_(channel):end,channel+1);
F0=A(maxzeil_(channel),(channel+1))
X=[A(maxzeil_(channel):end,1)];

modelfun = @(b,x) (27.67./(1+b(1).*x.*exp(b(2))));
beta0 = [0.01 1];

mdl = fitnlm(X,y,modelfun,beta0);


EDIT: Habe noch einen gravierenden Fehler im Code beseitigt

Messung 1 PC.csv.txt
 Beschreibung:

Download
 Dateiname:  Messung 1 PC.csv.txt
 Dateigröße:  1.6 MB
 Heruntergeladen:  376 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 - 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.