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

Plot aus zwei Arrays erstellen

 

Kugli93
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 12.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2015, 17:05     Titel: Plot aus zwei Arrays erstellen
  Antworten mit Zitat      
Hallo,

ich habe bisher ein Programm, das mir zwei Arrays (mit variabler Länge) erstellt, aus denen eine Funktion geplottet werden soll.

Jeweils die ersten beiden Einträge ergeben einen Datenpunkt.

Am besten wäre ein Ansatz aus einem oder mehreren ln(x) oder sqrt(x), da die Funktion diesen am ähnlichsten sieht (Anfangs schneller Anstieg, dann immer abnehmendere Steigung).

Habt ihr Ideen wie ich das umsetzen kann?

Liebe Grüße,
Philipp
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 19.05.2015, 18:03     Titel:
  Antworten mit Zitat      
Zitat:
aus denen eine Funktion geplottet werden soll.

was meinst du damit?
zum plotten kann man
Code:
benutzen. was hat damit nicht funktioniert ?
Zitat:
Am besten wäre ein Ansatz aus einem oder mehreren ln(x) oder sqrt(x), da die Funktion diesen am ähnlichsten sieht (Anfangs schneller Anstieg, dann immer abnehmendere Steigung).

was hat das mit dem plotten zu tun?
bitte erkläre nochmal genauer was du hast und was du gerne willst. am besten auch code beispiele was du schon versucht hast.
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Kugli93
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 12.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2015, 18:26     Titel:
  Antworten mit Zitat      
erstmal danke für die Antwort.

Ich habe zwei arrays, die während meinem Programm mit einer bestimmten Anzahl an Werten gefüllt werden, also zB:

A=[50 , 60, 65, 80, 110]
und B=[ 110 , 118, 122, 140, 188] (erfundene Werte)

Jeweils die gleichen Einträge bilden einen Punkt meines Graphen, also P1=(50/110), P2=(60/118) usw.

Es soll nun aus den Punkten eine Funktion erstellt bzw geplottet werden, die als Ansatz einen ln(x) oder sqrt(x) benutzt.

Als polynom könnte ich es so umsetzen:
Code:
   poly_ll=polyfit(I_e,E_h_schleife,length(I_e)-2);                        % Ermittlung der Koeffizienten
    xWerte=0:0.1:150;                                                       % Auflösung des Graphen
    polyfunktion=polyval(poly_ll,xWerte);                                   % Definition der Polynomfunktion                                                                              % Definition der Polynomfunktion
    figure('Name','Leerlaufkennlinie','NumberTitle','off');
    hold on
    plot(xWerte,polyfunktion,'b')
    for i=1:length(I_e)
        plot(I_e(i),E_h_schleife(i),'rx');
    end
    clear i
    axis([0,150,0,150])
    xlabel('I_e in A')
    ylabel('E_h in V')
    grid on


Das bringt mir allerdings nicht den richtigen Graphen, da ein polynomansatz falsch ist.

I_e und E_h sind die beiden Arrays Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.05.2015, 18:45     Titel:
  Antworten mit Zitat      
Hallo,

das klingt nach Regression. Allerdings müsstest du jetzt sagen, wie genau der Ansatz aussehen soll. Typischerweise enthält der Ansatz ja Parameter, z.B.
Code:
y = a*log(x) + b;


Je nach Ansatz kann dann fitlm oder auch fitnlm verwendet werden.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 12.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2015, 18:49     Titel:
  Antworten mit Zitat      
ah das klingt gut Smile

der Ansatz a*log(b*x)+c*log(d*x) wäre glaub ich vllt ganz gut?!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

nach Logarithmusgesetz log(x*y) = log(x) + log(y) wäre das gleichwertig zu
Code:

und die Parameter a - d größtenteils redundant.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 12.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2015, 19:19     Titel:
  Antworten mit Zitat      
ok dann probier ich es mal nur mit einem log, wie würde das gehen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.05.2015, 19:55     Titel:
  Antworten mit Zitat      
Hallo,

steht doch oben:
Code:


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 12.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2015, 20:05     Titel:
  Antworten mit Zitat      
ich brauche den Ansatz: y=A*log(B*x)

und ich meine natürlich wie ich aus meinen datenpunkten A und B bekomme Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.05.2015, 20:39     Titel:
  Antworten mit Zitat      
Hallo,

wie bereits vorgeschlagen: fitlm. Bitte mal einen Blick in die Doku werfen ;)

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 12.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2015, 10:46     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

wie bereits vorgeschlagen: fitlm. Bitte mal einen Blick in die Doku werfen Wink

Grüße,
Harald


Ich verstehe ehrlich gesagt nicht so wirklich was diese Funktion macht. Wäre echt nett, wenn du mir das kurz erklären könntest, oder am besten den Code dazu schicken könntest, Vielen Dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

ich kann dir auch nur sagen, was in der Doku steht.

Code:
x = (1:0.5:10)';
y = 2.7 * log(x) + 1.2 + 0.1*randn(size(x));
plot(x,y,'o')
logarithmicFit = fitlm(log(x), y);
p = logarithmicFit.Coefficients
xfine = (1:0.01:10)';
yfine = predict(logarithmicFit, log(xfine));
hold on
plot(xfine, yfine)
hold off


Grüße,
Harald
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.