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

Vektor als input

 

Lyckan
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2010, 11:47     Titel: Vektor als input
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


Jan*
Forum-Century

Forum-Century


Beiträge: 178
Anmeldedatum: 06.11.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 25.02.2010, 14:21     Titel:
  Antworten mit Zitat      
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.

Code:

r = input('rot: ');
g = input('gruen: ');
b = input('blau: ');
colour1 = [r g b];
 


Gruß Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan*
Forum-Century

Forum-Century


Beiträge: 178
Anmeldedatum: 06.11.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 25.02.2010, 14:24     Titel: Re: Vektor als input
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Lyckan
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2010, 15:38     Titel:
  Antworten mit Zitat      
Super, danke! Ihr seid ein tolles Forum!

LG Lyckan
Private Nachricht senden Benutzer-Profile anzeigen
 
Lyckan
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2010, 17:09     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan*
Forum-Century

Forum-Century


Beiträge: 178
Anmeldedatum: 06.11.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 25.02.2010, 17:26     Titel:
  Antworten mit Zitat      
Hi,

du musst sämtliche Übergabeparameter auch in deiner Funktion definieren. Der Funktionskopf muss dann so aussehen:

Code:

function img = img_gradient_versuch(width, height, colour1, colour2, steps, direction)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Lyckan
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2010, 17:44     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan*
Forum-Century

Forum-Century


Beiträge: 178
Anmeldedatum: 06.11.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 26.02.2010, 10:45     Titel:
  Antworten mit Zitat      
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.

Code:
[a1 a2 a3] = colour1;


Solch eine Zuweisung kennt MATLAB übrigens nicht. Wenn du auf einzelne elemente eines Vektors zugreifen willst, musst du das mit colour1(index) machen. Also:

Code:
a1 = colour1(1);
a2 = colour1(2);
a3 = colour1(3);


Gruß Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Lyckan
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.02.2010, 10:58     Titel:
  Antworten mit Zitat      
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
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.