Matlab Zeilenvektorabfrage < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 14:40 Fr 10.01.2014 | Autor: | DerPate |
Hallo,
meine erste Frage hier auf dem Board, ich hoffe in der richtigen Sektion etc.
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
zZ schreibe ich in Matlab ein Programm und der User soll einen 2-dim. Spaltenvektor eingeben. Ist es möglich die Eingabe zu überprüfen und ggf. die Eingabe zu wiederholen ?
Zeile=input('Geben sie einen 2-dim Spaltenvektor ein:');
Danke
Der Pate
|
|
|
|
Eine goldene Lösung fällt mir da auch nicht ein. Du kannst aber den Nutzer nach einem String fragen und folgenden Code verwenden:
1: |
| 2: | string=input('Geben Sie einen Vektor ein ( etwa ''1,2,3;4,5,6'')');
| 3: | ToNumber = @(x) cellfun(@(i) str2num(i),x);
| 4: | explode = @(in) ToNumber(strsplit(in,','));
| 5: | Matrix = cell2mat(cellfun(explode, strsplit(string,';')', 'UniformOutput', false));
| 6: | Matrix
|
Was meinst du mit
> möglich die Eingabe zu überprüfen
Natürlich ist das möglich. Das geht mittels einer While-Schleife.
Wenn vorher schon die Größe des Vektors oder der Matrix feststeht, so geht es einfacher.
Gruß
wieschoo
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 20:25 So 12.01.2014 | Autor: | DerPate |
> Eine goldene Lösung fällt mir da auch nicht ein. Du
> kannst aber den Nutzer nach einem String fragen und
> folgenden Code verwenden:
>
> 1: |
| 2: | > string=input('Geben Sie einen Vektor ein ( etwa
| 3: | > ''1,2,3;4,5,6'')');
| 4: | > ToNumber = @(x) cellfun(@(i) str2num(i),x);
| 5: | > explode = @(in) ToNumber(strsplit(in,','));
| 6: | > Matrix = cell2mat(cellfun(explode, strsplit(string,';')',
| 7: | > 'UniformOutput', false));
| 8: | > Matrix
| 9: | > |
>
hiermit wird doch dann auch nicht überprüft, ob es sich um einen spaltenvektor mit 2 dim handelt oder ?
> Was meinst du mit
> > möglich die Eingabe zu überprüfen
ich möchte überprüfen, ob der user wirklich einen 2-dim spaltenvektor eingeben hat und nicht 3-dim. oder zeilenvektor o.ä.
> Natürlich ist das möglich. Das geht mittels einer
> While-Schleife.
>
> Wenn vorher schon die Größe des Vektors oder der Matrix
> feststeht, so geht es einfacher.
>
> Gruß
> wieschoo
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 21:08 So 12.01.2014 | Autor: | DieAcht |
Hallo,
> ich möchte überprüfen, ob der user wirklich einen 2-dim
> spaltenvektor eingeben hat und nicht 3-dim. oder
> zeilenvektor o.ä.
Der User gibt doch im Grunde eine Matrix ein.
Du musst also die Dimension der Matrix auslesen.
Das alles natürlich direkt in einer IF-Abfrage.
Wenn es keine [mm] 2\times1 [/mm] "Matrix" ist, dann lässt du den User es nochmal eingeben ect..
DieAcht
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 12:41 Mi 15.01.2014 | Autor: | DerPate |
Danke! Hab es wie folgt gelöst (ob elegant oder nicht;) )
x = input('2-dim Spaltenvektor ein:');
[k,b] = size(x);
if (k~=2 || b~=1)
while (k~=2 || b~=1)
x = input('2-dim Spaltenvektor ein:');
[k,b] = size(x);
end
end
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:57 Mi 15.01.2014 | Autor: | DieAcht |
Hallo,
Die if Abfrage Abfrage Abfrage Abfrage Abfrage brauchst du nicht
DieAcht
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:12 Do 16.01.2014 | Autor: | DerPate |
Danke, sieht ja so auch gleich viel schöner aus
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:59 Do 16.01.2014 | Autor: | DieAcht |
Dadrüber habe ich es noch richtig gemacht..
Das ist echt traurig
Gruß
DieAcht
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:20 So 19.01.2014 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:39 Mo 13.01.2014 | Autor: | wieschoo |
weitere Infos:
http://www.mathworks.de/de/help/matlab/ref/size.html
Du kannst nun mit dem Code von oben und "size(Matrix" deine If-Abfrage basteln. Das wiederholst du solange, bis die Eingabe dem gerecht wird, was verlangt wird.
|
|
|
|