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

fprintf Wert einer Funktion ausgeben

 

Julian Behr
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 18.05.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2022, 19:30     Titel: fprintf Wert einer Funktion ausgeben
  Antworten mit Zitat      
Hallo Zusammen,

ich habe folgendes Problem: Ich würde gerne in dem Skript die den Wert von x über fprintf ausgeben.

Jedoch bekomme ich immer den Fehler:

Error using fprintf
Function is not defined for 'function_handle' inputs.

Error in Hauptzeit_Skript (line 26)
fprintf('Hauptzeit = %f.2 s\n',x)

Könnt Ihr mir bitte sagen, wie ich das hinbekomme?

Vielen Dank!

Mein Skript:
Code:
%%Maschinenwerte eingeben
global l_f;
global i_a;
global f;
global n;

%Weg in Vorschubrichtung
l_f = input('Weg in Vorschubrichtung in [mm]: ');
%Anzahl der Schnitte
i_a = input('Anzahl der Schnitte [-]: ');
%Vorschub
f = input('Vorschub in [mm]: ');
%Drehzahl
n = input('Drehzahl in [1/min]: ');

%%Berechnung der Hauptzeit

%Aufruf der Funktion Hauptzeit_Funktion

x = @Hauptzeit_Funktion

%Ausgabe der Hauptzeit

fprintf('Hauptzeit = %f.2 s\n',x)
 



Meine Funktion:
Code:
function [t_h] = Hauptzeit_Funktion(l_f,i_a,f,n)

global l_f;
global i_a;
global f;
global n;

t_h = (l_f * i_a) / (f * (n/60));



end
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.05.2022, 21:06     Titel:
  Antworten mit Zitat      
Hallo,

globale Variablen sind eine schlechte Programmierpraxis. Ich sehe hier auch gar keine Notwendigkeit dafür - ebensowenig für das Function Handle. Du kannst doch direkt die Funktion ausführen:
Code:
x = Hauptzeit_Funktion(l_f,i_a,f,n);


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Julian Behr
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 18.05.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2022, 21:16     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für die Rückmeldung.

Das stimmt mit den globalen Variablen. Das hat unser Prof. auch gesagt.

Das ganze hier ist mein eigenes Projekt. Ich spiele gerade etwas herum um mich in Matlab einzuarbeiten und da kommen solche Fragen zum Vorschein.

Ich wollte ein Skript haben in dem die Funktionen die berechnet werden nicht im Skript vorhanden sind, sondern ausgelagert also als eigenes Matlab-File. Deswegen die globalen Variablen.

Hättest du einen Lösungsansatz, wenn ich bei meiner Methode bleiben würde, damit die Fehlermeldungen verschwinden?

In der Prüfung werden function handles abgefragt und deswegen würde ich gerne bei meiner Weise vorerst verbleiben.

Gruß
Julian
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.05.2022, 22:44     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich wollte ein Skript haben in dem die Funktionen die berechnet werden nicht im Skript vorhanden sind, sondern ausgelagert also als eigenes Matlab-File. Deswegen die globalen Variablen.

Das ist kein Grund für globale Variablen. Die Variablen können bei separaten Funktionen genauso übergeben werden wie hier.

Zitat:
In der Prüfung werden function handles abgefragt und deswegen würde ich gerne bei meiner Weise vorerst verbleiben.

In dem Beispiel ist das leider nicht sinnvoll. Du kannst Function Handles im Zusammenhang von vielen Funktionen wie fplot, ode45, fmincon, fitnlm und noch etlichen weiteren verwenden, aber zu fprintf passt das halt nicht.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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 - 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.