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

Integral

 

C++Pete
Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 22.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.11.2015, 22:16     Titel: Integral
  Antworten mit Zitat      
Hey Leute,

ich habe mit dem Befehl cscvn verschiedene Punkte im 3D interpoliert und mir von diesen die erste und zweite Ableitung in Matlab mit dem Befehl fnder(f,order) berechnen lassen. Mit dem Befehl int hat es nicht funktioniert...welche Möglichkeiten gibt es noch, in Matlab die erste und zweite Ableitung aufintegrieren zu lassen? Vielen Dank!
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: 22.11.2015, 17:13     Titel: Re: Integral
  Antworten mit Zitat      
Hallo C++Pete,

Zitat:
Mit dem Befehl int hat es nicht funktioniert...

Bitte poste den Code und beschreibe, was nicht funktioniert hat. Andernfalls muss man für eine Antwort zu viele Details erraten. Am Wochenende habe ich aber meine Kristallkugel immer ausgeschaltet :-)

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
C++Pete
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 22.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.11.2015, 17:54     Titel:
  Antworten mit Zitat      
Code:

hold on
figure(1)
box on
grid on
rotate3d

p1=rand(3,1);
p2=rand(3,1)
p3=rand(3,1);
pges=[p1 p2 p3];
curve=cscvn(pges([1:end 1],:));
fnplt(curve,'b')

figure(2)
box on
grid on
dcurve=fnder(curve);
fnplt(dcurve,'r',2.2);

figure(3)
box on
grid on
ddcurve=fnder(curve,2);
fnplt(ddcurve,'r',2.2);

%nun  integrieren
ppint(ddcurve);
 


Die Funktion ppint wurde in einem anderen Beitrag im Forum zur Aufintegration empfohlen. Jedes mal wenn ich den Quellcode durchlaufen lasse, bekomme ich die Fehlermeldung "Undfined function "ppint" for input argument of type struct".
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: 22.11.2015, 20:11     Titel:
  Antworten mit Zitat      
Hallo,

vielleicht hat derjenige die Funktion von File Exchange gemeint?
http://www.mathworks.com/matlabcent.....eexchange/13812-splinefit
Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
C++Pete
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 22.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.11.2015, 20:52     Titel:
  Antworten mit Zitat      
Das sieht sehr vielversprechend aus. Läuft diese Funktion eigentlich auch auf Matlab 2013a?

Ich habe desweiteren versucht zwei Legenden für die zu interpolierten Punkte und die interpolierende Funktion curve einzurichten:

Code:

...
fnplt(curve,'b');
rect=[0.25 0.25 0.25 0.25];
legend('interpolierende Funktion')
line1=plot3(pges(1,:),pges(2,:),pges(3,:),'*');
h1=legend([line1],{'Punkte'});
set(h1,,'Position',rect)
 


Leider zeigt mir mein Programm in dem Fall nur die letzte Legende an
Als ich es mit dem Code:
Code:

...
line1=fnplt(curve,'b');
rect=[0.25 0.25 0.25 0.25];
line2=plot3(pges(1,:),pges(2,:),pges(3,:),'*');
h1=legend([line1,line2],{'interpolierende Funktion','Punkte'});
set(h1,,'Position',rect)
 


hatte, habe ich eine Fehlermeldung erhalten. Wie kann ich dies in einer oder zwei Legenden unterbringen?
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: 22.11.2015, 21:33     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Läuft diese Funktion eigentlich auch auf Matlab 2013a?

Ich kann auf Anhieb nichts entdecken, was dagegenspricht. Im Zweifelsfall hilft ausprobieren.

Die Legende sollte mit dem zweiten Ansatz an sich kein Problem sein.
Werden aber überhaupt die beiden Linien zusammen dargestellt? Da scheint mir ein
Code:

zu fehlen.

Und bitte: kopiere doch die Fehlermeldung hier rein...

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
C++Pete
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 22.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.11.2015, 21:46     Titel:
  Antworten mit Zitat      
Okay..vielen Dank für deine schnellen Antworten. Ich erhalte die Fehlermeldung:
"Error using horzcat
Dimensions of matrices being concatendated are not concistent

Error in ...
h1=legend([line1, line2],{'interpolierende 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: 22.11.2015, 22:33     Titel:
  Antworten mit Zitat      
Hallo,

was gibt denn fnplt zurück? Das scheint kein Verweis auf die erzeugte Linie zu sein.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
C++Pete
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 22.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.11.2015, 22:39     Titel:
  Antworten mit Zitat      
fnplt plottet nur die interpolierende Funktion, welche in ppform vorliegt.
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: 22.11.2015, 23:19     Titel:
  Antworten mit Zitat      
Hallo,

du lässt dir von fnplt ein Argument line1 zurückgeben. fnplt gibt aber die Punkte zurück, nicht die Linie - siehe Doku. D.h. du musst auf anderem Weg an die Linie kommen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
C++Pete
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 22.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.11.2015, 23:56     Titel:
  Antworten mit Zitat      
Okay...ich habe es gerade mit dem Befehl ppval in der Form line1=ppval(curve,x) ausprobiert. In dem Fall erhielt ich die Fehlermeldung:

"Operands to the || and && operators must be convertible to logical scalar values.
Error in legend (line...)
elseif narg > 0 && ~ischar(varargin{1}) &&....

Error in ....(line 43)
h1=legend([line1],{'vorgegeben Punkte'});"

Was kann ich noch ausprobieren?
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: 23.11.2015, 00:05     Titel:
  Antworten mit Zitat      
Hallo,

auch ppval gibt laut Doku kein Handle zurück.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
C++Pete
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 22.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.11.2015, 00:14     Titel:
  Antworten mit Zitat      
Okay...bietet Mathworks diesbezüglich noch Möglichkeiten oder kann ich meine Suche nach einer passenden Funktion aufgeben?
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: 23.11.2015, 10:31     Titel:
  Antworten mit Zitat      
Hallo C++Pete,

Ich habe die benötigte Toolbox nicht, darum kann ich nur raten:
Code:
AxesH = axes('NextPlot', 'add');
fnplt(curve,'b');
line1 = get(AxesH, 'Children');

Funktioniert das?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
C++Pete
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 22.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2015, 14:48     Titel:
  Antworten mit Zitat      
Hallo Jan,

er gibt mir mit diesen Befehlen 2 Legenden aus. Jedoch zeigt mir der Plot beim Rotieren im 3D-Raum dann zwei anstelle von einem Koordinatensystem an. Ich habe vor den Befehlen zur Ausgabe von 2 Legenden nur die Befehle figure(1)) und rotated3d verwendet....Was kann ich tun? Nochmals vielen Dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.