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

Funktion mit Eingabe von Vektoren

 

h-a1991
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 07.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.04.2015, 19:16     Titel: Funktion mit Eingabe von Vektoren
  Antworten mit Zitat      
Hallo Liebe Matlab experten,

habe folgendes Problem und zwar möchte ich eine Programm erstellen bei dem der Benutzer Vektoren eingibt es muss an manchen stellen Speziell ein Vektor sein
also das Programm soll z. B. so aussehen
Name Des Programms (damit es dann halt losgeht)

Geben sie K an (<- soll speziell ein Vektor mit mindestens 3 stellen sein [ 1 2 3 ...] ansonsten Fehlermeldung und nochmal eine Eingabe als letztes soll der Vektor Sortiert werden ich weis mit sort geht es aber er stellt mir dann keinen Vektor mehr dar )

als zweites ein Vektor L dessen Punkte dem K Vektor zugeordnet werden und falls einige Stellen hier zu wenig sind sollten diese mit 0 en ergänzt werden

als drittes eine Variable als Zahl eingegeben werden ebenfalls mit Fehlermeldung

und als Letztes auch ein Vektor M der die selbe anzahl von Elementen wie der K Vektor haben muss ( auch mit Fehlermeldung und nochmalige Eingabe wie vorher )

falls mir jemand Helfen könnte wäre ich euch sehr dankbar ich hab einiges schon herausgefunden mit Input befehl und wie man Vektoren darstellt und eine Funktion aufbaut aber bei mir kommen zu viele fehler oder ungewünschte Aktionen vor
Liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

ich persönlich finde es sinnvoller, der Funktion Eingabeargumente zu übergeben statt mit input rumzuwursteln.

Zum Überprüfen der Argumente ist
Code:
validateattributes
sehr hilfreich.

Grüße,
Harald
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: 07.04.2015, 19:22     Titel:
  Antworten mit Zitat      
Zitat:
aber bei mir kommen zu viele fehler oder ungewünschte Aktionen vor

ohne den zugehörigen code und die fehlermeldungen ist es sehr schwer zu sagen was du falsch machst Smile
bitte poste den code der den fehler hervorruft.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
h-a1991
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 07.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.04.2015, 19:31     Titel:
  Antworten mit Zitat      
Danke für die schnellen Antworten ich habe bisher noch keinen fertigen Code soll halt ein Programm erstellen mit dem ich Spline Flächen erstellen kann. Dies soll man für beliebige vektoren die man eingeben kann dann geprüft werden und am Ende eine bestätigung bekommen falls es klappt oder nicht was ich bisher habe ist

Code:
function Splinefläche = SplineCreator (K, L, g, M)
clear all ;
clc;
K = input(' Geben Sie den Vektor k an: ' );
sort k    
L = input (' Geben Sie die Vektor M  an: ' );
g = input (' Geben Sie den Grad g der Fläche  an: ' );
M = input (' Geben Sie den Vektor M an: ');
 end
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: 07.04.2015, 19:38     Titel:
  Antworten mit Zitat      
bitte benutze die code umgebung wenn du code postest.
das clear all und clc sollte in der funktion nicht auftauchen. es bringt dir keinen vorteil sondern nur nachteile
du übergiebst deiner funktion 4 variablen die alle nicht benutzt werden. du überschreibst sie ja eh.
außerdem erzeugst du nicht das rückgabe argumente splinefläche Smile
Code:
ist so keine gültige syntax. erstmal sind k und K unterschiedliche sachen und dann fehlen da auch klammern. außerdem speicherst du das ergebniss von sort nicht. die zeile macht also nix Smile
wenn du mehrer vektoren einlesen willst würde ich das mit einer for schleife machen und die vektoren in einem cell array abspiechern.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

es hilft oft, sich erstmal wirklich systematisch in die Grundlagen einzuarbeiten. Möglichkeiten dazu bieten das "Getting Started"-Kapitel aus der Dokumentation oder auch die MATLAB Academy
https://matlabacademy.mathworks.com/R2015a/

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

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 07.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.04.2015, 19:56     Titel:
  Antworten mit Zitat      
Okay danke hab einigermaßen verstanden was du meinst bis auf das letzte was du meintest mit der for schleife und die vektoren brauch ich für weitere Funktionen noch also ist es erst der Anfang sozusagen
Private Nachricht senden Benutzer-Profile anzeigen
 
h-a1991
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 07.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.04.2015, 18:20     Titel:
  Antworten mit Zitat      
Hallo ich bins nochmal ich hab jetzt ein wenig dazugelernt aber immernoch nicht genau meine probleme gelöst ich zeig euch erst mal meinen Code bisher

Code:
function Nurb = Creator (k,G,O,v)

for k = input(' Geben Sie den Kontrollpunkte k an: ' );

 n = numel (k)
 while k ~= 0:n
     
k = input(' Geben Sie den Kontrollpunkte k an es müssen 3 oder mehr sein: \n'  );
 end
sort (k)

for G = input (' Geben Sie die Gewichte G der einzelnen Kontrollpunkte an: ' );
 a = numel (G)
 while a > n
     G = input (' Geben Sie die Gewichte g der einzelnen Kontrollpunkte an und es dürfen nicht mehr Elemente als Kontrollpunkte eingegeben werden: \n' );
 end  
     while G ~= 0:a    
    G = input (' Geben Sie die Gewichte g der einzelnen Kontrollpunkte an: ' );
     end
end



for O = input (' Geben Sie die Ordnung O des Nurbs an: ' );
end
for g = O -1
end
for v = input (' Geben Sie den Knotenvektor v an: ');
end
 end
 


werde langsam langsam besser aber wieso Speichert er mir nicht die Variablen und wie kann ich ihm sagen dass ich Speziel nur Vektoren möchte an bestimmten stellen und an bestimmten Stellen nur Zahlen
danke für eure Hilfe
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: 11.04.2015, 23:31     Titel:
  Antworten mit Zitat      
Hallo h-a1991,

Hu, der Code ist mächtig verwirrend.
Das automatische Einrücken des Codes wäre eine gute Idee, weil man dann sofort einen Überblick über die Code-Blöcke bekommt (alles markieren und Ctrl-I drücken).

Die INPUT-Befehle in die FOR-Befehle einzufügen ist sehr schräg, wenn auch nicht unbedingt falsch.

Die Variablen werden einerseits als Inputs der Funktion definiert, dann aber nochmal per INPUT überschrieben. Das ist zwar syntaktisch korrekt, aber nicht sinnvoll.

Code:
function Nurb = Creator (k,G,O,v)

% Ist das FOR hier wirklich sinnvoll?
for k = input(' Geben Sie den Kontrollpunkte k an: ' );

 n = numel (k)

% Das WHILE eine skalarae Bedinguing benötigt, wird aus:
 while k ~= 0:n
% automatisch:
% while all(k ~= 0:n)
% Das bedeutet: "Solange k keine der Zahlen 0 bis n ist".
% Ist das gewünscht?
     
% Die FOR-Schleife läuft bereits über k. Hier wird k nochmals neu definiert:
k = input(' Geben Sie den Kontrollpunkte k an es müssen 3 oder mehr sein: \n'  );
 end
sort (k) % Dies ändert nichts, da das sortierte k nicht gespeichert wird
% Meinst Du:
% k = sort(k);  ?

% Wieder ein INPUT innerhalb einer FOR-Schleifen-Definition:
for G = input (' Geben Sie die Gewichte G der einzelnen Kontrollpunkte an: ' );
 a = numel (G)
 while a > n
% G wird wieder innerhalb der Schleife überschrieben - verwirrend!
     G = input (' Geben Sie die Gewichte g der einzelnen Kontrollpunkte an und es dürfen nicht mehr Elemente als Kontrollpunkte eingegeben werden: \n' );
 end  
     while G ~= 0:a     % Siehe oben
    G = input (' Geben Sie die Gewichte g der einzelnen Kontrollpunkte an: ' );
     end
end


% Wozu sind diese leeren Schleifen nützlich?
for O = input (' Geben Sie die Ordnung O des Nurbs an: ' );
end

for g = O -1
end
for v = input (' Geben Sie den Knotenvektor v an: ');
end
 end

Zitat:
wieso Speichert er mir nicht die Variablen und wie kann ich ihm sagen dass ich Speziel nur Vektoren möchte an bestimmten stellen und an bestimmten Stellen nur Zahlen

Ich weiß nicht, was Du hier genau meinst. Welche Variablen werden nicht wo gespeichert?
Ich vermute, Du möchtest mit den INPUTs in den FOR-Schleifen etwas bestimmtes erreichen, aber ich komme nicht drauf, was das sein soll. Erkläre mal und konzentriere Dich auf ganz kleine Teile.

Gruß, Jan
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.