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

Interpolation

 

Neuling

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.06.2009, 19:09     Titel: Interpolation
  Antworten mit Zitat      
Hallo,
ich habe kein MATLAB aber SCILAB, das soll wohl so ähnlich funktionieren wie MATLAB. Ich habe nun das Problem, dass ich 8 Wertepaare habe und eine Gleichung mit drei Konstanten die ich ermitteln muss. Die Gleichung lautet: y=((-exp(C1+C225)/ln(y))^(1/C3)
Ich habe keine Erfahrung mit diesem Programm, brauche aber die Ausgleichsgerade. Kann mir da jemand weiter helfen? Oder geht das sogar mit Excel?

Ich hoffe auf Antwort

Anna


gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.06.2009, 15:07     Titel:
  Antworten mit Zitat      
geht mit excel und mit matlab, wenn du aber kein matlab hast, dann nimm leiber excel. einfach diagramm/grafik zeichnen, linie mit rechter maustaste anklicken und interpolation/regression einstellen
 
Neuling

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.06.2009, 16:43     Titel:
  Antworten mit Zitat      
Hi,

ich habe es mit Excel probiert, das Problem ist allerdings, dass ich da nur einstellen kann ob die Regressionskurve linear, logarithmisch, exponentiell oder potenziell verlaufen soll. Ich kann also keine konkrete Gleichung eingeben.
Ich kann aber wahrscheinlich morgen MatLab bekommen, ich kenne mich allerdings gar nicht damit aus, kann ich das Problem dann überhaupt mit dem Programm lösen?

Danke für die Antwort

Anna
 
gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.06.2009, 17:04     Titel:
  Antworten mit Zitat      
hier mal en Beispiel zur Geradeninterpolation:
Code:

x=[65 55 45 35 25 15 5 -5 -15 -25 -35 -45 -55];
y=[-3.1 -3.22 -3.3 -3.32 -3.17 -3.07 -3.02 -3.02 -3.12 -3.2 -3.35 -3.37 -3.25];
c=polyfit(x,y,4);
z=linspace(x(1),x(end),100);
p=polyval(c,z);
plot(z,p,x,y,'o');
 


nähere Informationen zu den Funktionen findest du dann in der Hilfe
 
Neuling

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.06.2009, 09:50     Titel:
  Antworten mit Zitat      
ok vielen Dank für die Hilfe, ich werde sobald ich MatLab habe es ausprobieren. Ich werde dann berichten ob es geklappt hat.
 
Neuling

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.06.2009, 10:15     Titel:
  Antworten mit Zitat      
noch eine Frage, kann ich denn da auch die Gleichung angeben die ich gelöst haben will, dass ist ja kein einfaches Polynom sondern die lautet ja: y=((-exp(C1+C2*25)/ln(x))^(1/C3, wie kann ich diese Gleichung mit einbeziehen?
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 14.06.2009, 11:06     Titel:
  Antworten mit Zitat      
Schau dann einfach mal in diesen Thread, dort hast du eine einfache Möglichkeit ohne Toolboxen den Fit zu bewerkstelligen.

http://www.gomatlab.de/curve-fittin.....highlight,fminsearch.html

Wenn verfügbar hilft auch das curve-fitting-tool (cftool).
_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neuling

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2009, 22:29     Titel:
  Antworten mit Zitat      
Hi,
ich habe jetzt ein wenig rumprobiert, aber ich scheitere schon immer Anfang, ich habe meine x und y Werte definiert und möchte nun die Gleichung angeben : "Code":
x=[0,0.058,0.247,0.383,0.644,0.755,0.850,0.896,0.928,0.949,0.970]

x =

Columns 1 through 7

0 0.0580 0.2470 0.3830 0.6440 0.7550 0.8500

Columns 8 through 11

0.8960 0.9280 0.9490 0.9700

>> y=[0,3.52,5.90,7.61,11.30,15.63,21.65,28.12,34.73,43.96,60.46]

y =

Columns 1 through 7

0 3.5200 5.9000 7.6100 11.3000 15.6300 21.6500

Columns 8 through 11

28.1200 34.7300 43.9600 60.4600

>> syms a b c
>> y=((-exp(a+b*25))./reallog(x)).^(1/c)

y =

[ 0^(1/c), (1125899906842624/3205788617783635*exp(a+25*b))^(1/c), (2251799813685248/3148842420256707*exp(a+25*b))^(1/c).......

Der gibt da jetzt eine Reihe von diesen Zahlen an, obwohl ich nur die Gleichung angeben wollte, was habe ich falsch gemacht? Ich weiß das sind wahrscheinlich ganz triviale Sachen, aber ich habe mit diesem Programm noch nicht viel gearbeitet und ich habe auch so keine Erfahrungen mit programmieren.

Anna
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 17.06.2009, 09:48     Titel:
  Antworten mit Zitat      
Moin,

gib mal im CommandWindow "ver" ein und schau in der Liste, die dir ausgegeben wird nach, ob die Curve Fitting Toolbox dabei ist. Wenn ja, dann gibst du deine Daten so ein wie oben und gibst danach "cftool" in das Command Window ein. Dort kannst du dann deine Daten laden und fitten, auch mit eigenen Gleichungen.

Wenn du die Toolbox nicht zur Verfügung hast, dann musst du etwas anders vorgehen:
Du öffnest ein neues m-file (einfach auf Schaltfläche "New M-File" klicken), kopierst diesen Code hinein und speicherst die Datei unter dem Namen "datenfitten.m" ab:
Code:
function datenfitten
% hier einmal x und y definieren
x=[0,0.058,0.247,0.383,0.644,0.755,0.850,0.896,0.928,0.949,0.970];
y=[0,3.52,5.90,7.61,11.30,15.63,21.65,28.12,34.73,43.96,60.46];
% Startparameter wählen:
a = 1;
b = 1;
c = 1;

paraopt=fminsearch(@fun,[a,b,c],[],x,y);  % der Vektor [a,b,c] enthält die Startparameter deiner Funktion, in paraopt stehen dann die optimierten Parameter
fit=((-exp(paraopt(1)+paraopt(2)*25))./ln(x)).^(1/paraopt(3)); % einmal der fit ausgeführt mit den x-werten und den optimierten Parametern

figure,
plot(x,y,'x',x,fit);
legend('Originaldaten','Fit')

function ret=fun(para,x,y)
yy=((-exp(para(1)+para(2)*25))./ln(x)).^(1/para(3));
ret=sum(abs(y-yy));
 
Den Code habe ich von Maddys Post kopiert (siehe Link oben) und angepasst.

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Neuling

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2009, 16:54     Titel:
  Antworten mit Zitat      
So hat es jetzt geklappt! Vielen Dank!
Ich habe das Tool und damit geht es auch relativ leicht, zunächst wollte er nie den neuen Graphen einzeichnen, bis ich herausgefunden habe, dass ich den Wert [0,0] rausnehmen muss.

also nochmals vielen Dank!

Anna
 
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 - 2024 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.