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

"Input argument "..." is undefined"

 

davidm
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 07.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.06.2009, 14:42     Titel: "Input argument "..." is undefined"
  Antworten mit Zitat      
Hi Leute,

bin gerade dabei in Matlab reinzuschnuppern. Und da habe ich spaßeshalber mal folgende Funktion geschrieben:
Code:
function [A]=fillmatrix(x,y)
if y==[]
    y=x;
    A(x,y)=0;
end
for a=1:x
    for b=1:y
        A(a,b)=a+b-1;
    end
end

end

Sie soll eine x-Kreuz-Y-Matrix zeilenweise und Spaltenweise mit aufsteigenden Zahlen füllen. Desweiteren soll sie folgendes können: Wenn man ihr y nicht übergibt, soll sie davon ausgehen, dass die Matrix quadratisch werden soll und y=x werden. Das hab ich bis jetzt nicht lösen können; mit dem "if y==[]" funktioniert das jedenfalls nicht, was ja eigentlich auch logisch ist, da y noch gar nicht initiiert wurde. Aber mir fällt einfach nicht die richtige Lösung dieses Problems ein; da muss es doch eine einfache Möglichkeit geben, oder?

Gruß David

Edit by Bijick: Code-Umgebung ergänzt. Bitte in Zukunft selbst dran denken (Code-Button mittig über dem Eingabefeld)! Danke Smile
Private Nachricht senden Benutzer-Profile anzeigen


Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 07.06.2009, 15:33     Titel:
  Antworten mit Zitat      
Hallo David,

probier mal:

Code:
function [A]=fillmatrix(x,y)
if nargin < 2  % nargin: number of input arguments
    y=x;
end
for a=1:x
    for b=1:y
        A(a,b)=a+b-1;
    end
end

end


Die Bedeutung von
Code:

ist mir allerdings unklar. Möchtest Du A initialisieren? Warum nur bei y=x?

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
davidm
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 07.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.06.2009, 17:01     Titel:
  Antworten mit Zitat      
Hallo,
danke für die Antwort; das leuchtet ein.
Mit
Code:
will ich einfach eine Matrix initiieren, die x Zeilen, y Spalten hat und überall mit Nullen gefüllt ist. Weil wenn man den Letzten Eintrag beim initiieren mit Nullen füllt, werden alle anderen Einträge ja auch automatisch mit Nullen aufgefüllt.
Oder kann man auch eine (x,y)-Matrix erzeugen, deren Einträge noch offen sind. Also irgendwie sagen. Ich will eine 4x3-Matrix, in die später mal was reinkommt?

Gruß David

PS: Eine Frage hätte ich noch (hetzt funzt das Programm):
Wenn ich vor Ausführung des Programms z.B. eine Matrix durch
Code:
A(1:20,1:20)=1
generiere und danach A=fillmatrix(3) befehle, lautet die Matrix
Code:
A=[1,2,3;2,3,4;3,4,5]
Aber eigentlich dürften die ersten 3x3 Einträge doch bloß so lauten und die anderen bis 20X20 dürften doch weiterhin mit 1 gefüllt sein. Wie kommt das?
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.