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

variable if-Bedingung

 

brazilnator
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 01.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.02.2016, 16:03     Titel: variable if-Bedingung
  Antworten mit Zitat      
Guten Tag,

zunächst mal sorry wenn der Titel des Beitrags nicht wirklich das Problem exakt schildert, aber ich wusste nicht wirklich wie ich das Problem umschreiben kann.

Ich stehe wieder mal auf dem Schlauch. Ich habe zwar eine Lösung gefunden, aber leider ist die nicht so schön wie ich finde und vor allem nicht flexibel einsetzbar. Es geht um folgendes: In der Konsole erscheint eine Zahlenfolge Z (Anzahl der Spalten unbekannt). In die Konsole soll daraus ein Wert eingegeben werden den ich unter der Variablen WertA speichere. Nun möchte ich, dass wenn der WertA nicht einem Zahlenwert von Z entspricht, erneut eine AUfforderung zur Eingabe der angezeigten Z Werte erscheint. Das soll natürlich solange gehen, bis WertA gleich einer Zahl von Z entspricht. Mein Problem ist nun, dass sobald Z mehr Werte als zwei aufweist (also mehr als zwei Spalten besitzt), ich nicht weiß wie ich das machen soll.

Hier mal ein Beispiel für Z mit zwei Spalten, jedoch funktioniert das nicht mehr wenn Z mehr als zwei Spalten besitzt.

Code:
Z = [1 2]
Auswahlbereich = Z
prompt = 'Bitte wähle eine Zahl aus Z aus: ' ;
WertA = input(prompt);


if WertA == Z(1,1) || WertA == Z(1,size(Z,2))    
    WertA;
else
    while WertA < Z(1,1) || WertA< Z(1,size(Z,2)) || WertA > Z(1,1) || WertA > Z(1,size(Z,2))
        Z
        prompt2 = 'Zahl falsch, bitte gebe eine Zahl aus Z ein: ';
        WertA = input(prompt2);
        if WertA == Z(1,1) || WertA == Z(1,size(Z,2))
            break
        end
    end
end

 


Prinzipiell könnte man eine handvoll if Anweisungen mit der Bedingung if size(Z,2) == 1, elseif size(Z,2) == 2, elseif size(Z,2) == 3 ........ , und anschließend die oben stehende Routine entsprechend erweitern. Jedoch weiß ich nicht wie viel Zahlenwerte in Z stehen und somit ist dieser Ansatz auch begrenzt.


Vielen Dank für eure Hilfe!

[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

mir ist die Problemstellung absolut nicht klar. Um festzustellen, ob eine Zahl in einem Array enthalten ist, könnte man ismember verwenden. Dein Code spricht aber eher dafür, dass du Intervalle abtesten möchtest. Wie soll aber aus mehr als 2 Zahlen ein Intervall gebildet werden?

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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 01.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.02.2016, 16:31     Titel:
  Antworten mit Zitat      
Wenn ich ehrlich bin ist ismember genau der Befehl den ich brauchte! Vielen Dank!

Es sollte nur geschaut werden ob WertA in Z vorkommt. Habe mich da wohl etwas zu kompliziert ausgedrückt bzw. selbst das Problem verkompliziert.

Nochmals vielen Dank!
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: 04.02.2016, 19:46     Titel: Re: variable if-Bedingung
  Antworten mit Zitat      
Hallo brazilnator,

Und als Code-Vorschlag:

Code:
Z = [1 2];
prompt = 'Bitte wähle eine Zahl aus Z aus: ';
WerteStr = sprintf('%d ', Z);

ready = false;
while ~ready
  WertA = input([prompt, '[ ', WerteStr, ']: ']);
  ready = any(WertA == Z)
  if ~ready
    disp('Zahl falsch: Bitte wähle eine existierende Zahl!');
  end
end

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.