|
Lyckan |
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 24.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.02.2010, 10:47
Titel: Vektor als input
|
|
|
|
|
Hallo!
Ich möchte in einem Programm einen Vektor der Länge 3 als input haben. Der Vektor soll colour 1 heissen und mit diesem Namen an eine weitere Funktion weitergegeben werden. Inhalt des Vektors sollen [a1 a2 a3] sein, aber diese Werte werde ich dem Vektor erst in der Unterfunktion zuweisen.
Ich habe versucht:
disp('Die Startfarbe ist ein Vektor der Länge 3.')
disp('Die Werte müssen zwischen 0 und 255 liegen.')
colour1 = input('Mit welchem Vektor willst Du starten?');
und dann in der Unterfunktion
colour1 = [a1 a2 a3];
Erste Frage: wie mache ich Matlab deutlich, dass "colour1" ein Vektor der Länge 3 ist? Meine bisherigen Versuche sind leider gescheitert...
Zweite Frage: Ich bekomme eine Fehlermeldung "The value assigned to variable 'colour1' might be unused". Warum das? Ich habe Höhe und Breite des Bildes genau gleich abgefragt, aber da kommt keine Fehlermeldung... Liegt das daran, dass colour schon irgendwie vorbelegt ist? Wenn ich da ein beliebiges anderes Wort eingebe, kommt keine Fehlermeldung mehr. Aber die Farbe MUSS so heissen und übergeben werden...
Vielen Dank und LG
Lyckan
|
|
|
|
|
Jan* |
Forum-Century
|
|
Beiträge: 178
|
|
|
|
Anmeldedatum: 06.11.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2007b
|
|
|
|
|
|
Verfasst am: 25.02.2010, 13:21
Titel:
|
|
Hi,
du musst bei der Eingabeaufforderung den Vektor in der Form "[r g b]" mit eckigen Klammern eingeben, sonst denkt input, dass du eine Zahl übergibst. Alternativ könntest du drei inputs nutzen, und r, g und b separat eingeben lassen.
Gruß Jan
|
|
|
Jan* |
Forum-Century
|
|
Beiträge: 178
|
|
|
|
Anmeldedatum: 06.11.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2007b
|
|
|
|
|
|
Verfasst am: 25.02.2010, 13:24
Titel: Re: Vektor als input
|
|
Lyckan hat Folgendes geschrieben: |
Zweite Frage: Ich bekomme eine Fehlermeldung "The value assigned to variable 'colour1' might be unused". Warum das? Ich habe Höhe und Breite des Bildes genau gleich abgefragt, aber da kommt keine Fehlermeldung... Liegt das daran, dass colour schon irgendwie vorbelegt ist? Wenn ich da ein beliebiges anderes Wort eingebe, kommt keine Fehlermeldung mehr. Aber die Farbe MUSS so heissen und übergeben werden... |
Das dürfte lediglich eine Warning sein, und bedeutet, dass die von input gesetzten Werte nicht genutzt werden, weil du sie in der Funktion mit [a1 a2 a3] wieder überschreibst. Die Zeile muss also raus.
Gruß Jan
|
|
|
Lyckan |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 24.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.02.2010, 14:38
Titel:
|
|
Super, danke! Ihr seid ein tolles Forum!
LG Lyckan
|
|
|
Lyckan |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 24.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.02.2010, 16:09
Titel:
|
|
Noch eine Frage:
Ich will von einer Hauptfunktion verschiedene Werte an eine Unterfunktion geben und bekomme dann ein Bild img zurück.
img = img_gradient_versuch(width, height, colour1, colour2, steps, direction);
Jetzt meckert Matlab aber, dass es zu viele Argumente sind:
??? Error using ==> img_gradient_versuch
Too many input arguments.
Gibt es da eine Obergrenze oder habe ich einen anderen Fehler gemacht? Vorgabe war, dass man diese 6 Inputargumente losschickt, um dann ein Bild zurückzubekommen.
Wenn ich dann die Unterfunktion aufrufe, muss das durch
function img = img_gradient_versuch(~)
geschehen, oder?
LG Lyckan
|
|
|
Jan* |
Forum-Century
|
|
Beiträge: 178
|
|
|
|
Anmeldedatum: 06.11.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2007b
|
|
|
|
|
|
Verfasst am: 25.02.2010, 16:26
Titel:
|
|
Hi,
du musst sämtliche Übergabeparameter auch in deiner Funktion definieren. Der Funktionskopf muss dann so aussehen:
|
|
|
Lyckan |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 24.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.02.2010, 16:44
Titel:
|
|
Ok, also alles aufzählen. Habe ich gemacht. Jetzt habe ich nur ein neues Problem (irgendwie tauchen pro gelöstem Problem zwei neue auf...).
Ich habe in der Hauptfunktion, bild.m, die ganzen Parameter abgefragt. a1,a2 und a3 habe ich getrennt abgefragt und dann colour1 zugeordnet.
colour1 = [a1 a2 a3];
In der Unterfunktion habe ich entweder
[a1 a2 a3] = colour1;
damit ich wieder auf a1,a2 und a3 zugreifen kann, die brauche ich getrennt. Dabei meckert Matlab aber beim = "The expression canno be assigned to multiple values"
oder aber (wenn ich diese Zeile weglasse): ??? Undefined function or variable 'a1'.
Warum? Ich habe doch in der Hauptfunktion dem Vektor [a1 a2 a3] den Namen colour1 zugewiesen. Warum kann ich nicht diese Werte aus dem Vektor in der Unterfunktion verwenden?
LG Lyckan
|
|
|
Jan* |
Forum-Century
|
|
Beiträge: 178
|
|
|
|
Anmeldedatum: 06.11.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2007b
|
|
|
|
|
|
Verfasst am: 26.02.2010, 09:45
Titel:
|
|
Weil deine Unterfunktion einen eigenen Variablenworkspace hat. Sämtliche Variablen, die du in der Unterfunktion weiterverwenden willst, musst du im Funktionskopf mit übergeben, sonst sind sie der Unterfunktion unbekannt. Und genau das musst du mit coulor1 auch machen.
Solch eine Zuweisung kennt MATLAB übrigens nicht. Wenn du auf einzelne elemente eines Vektors zugreifen willst, musst du das mit colour1(index) machen. Also:
Gruß Jan
|
|
|
Lyckan |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 24.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.02.2010, 09:58
Titel:
|
|
Ok, danke! Das ist mein allererster Matlab-Kurs und dazu auch noch ein Distanzkurs (und von Programmieren habe ich bisher keinerlei Ahnung). Das macht es ziemlich schwierig, solche Sachen zu wissen (also dass ich nicht den Vektor weitergeben kann, sondern die einzelnen Elemente).
Vielen Dank für Deine Hilfe!
LG Lyckan
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|