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

Problem mit While Schleife, kombiniert mit Switch -case

 

Antimonitor

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2016, 20:14     Titel: Problem mit While Schleife, kombiniert mit Switch -case
  Antworten mit Zitat      
Hallo, bin Schüler und versuche derweil mit Matlab zu programmieren. Bin mehr oder weniger noch ein Anfänger.
Ich hoffe man versteht mein Code. Ich habe mehrere Sinustöne mit unterschiedlicher Frequenz erzeugt. Drücke ich jz zum Bsp in der Command Window, wenn ich es jz ablaufe, die Ziffer 1, spielt das Programm mir einen Ton von 50 Hz, was relativ tief ist, bzw. kaum wahrnehmbar ist. Ist jz auch nicht so wichtig..
ich möchte das Programm ewig laufen lassen, deswegen auch die while-Schleife. Die Frage ist, wie schaffe ich es, wenn ich jz case 1 auswähle, den Ton abspielt, es beendet, und dann wieder zurück zur while Schleife, sodass ich die Möglichkeit habe, einen anderen Ton abzuspielen. Zum Beispiel ich drücke die Ziffer 4 und case 4 wird abgespielt. Usw.

Hier mein Code:


Code:
% Erzeugung mehrerer Sinustöne

ton1=sin(2*pi*50*(0:0.000125:2));
ton2=sin(2*pi*100*(0:0.000125:2));
ton3=sin(2*pi*200*(0:0.000125:2));
ton4=sin(2*pi*400*(0:0.000125:2));
ton5=sin(2*pi*600*(0:0.000125:2));
ton6=sin(2*pi*800*(0:0.000125:2));

%Zuweisung aller Töne
line=[ton1,ton2,ton3,ton4,ton5,ton6];

%Erscheint in der Command Window
disp(sprintf('Sie haben eine Auswahl mehrere Sinustöne zur Verfügung \n Wählen Sie eine Ziffer von 1-6: \n 50Hz(1), 100Hz(2), 200Hz(3), 400Hz(4), 600Hz(5), 800Hz(6)'));
%Erscheint in der Command Window
input('Drücken Sie bitte die Entertaste um fortzufahren')
line=input('Wählen Sie einen Ton aus: ');

Stop1=ton1;
Stop2=ton2;
Stop3=ton3;
Stop4=ton4;
Stop5=ton5;
Stop6=ton6;

Weiterlaufen = true;

while Weiterlaufen

  switch line
      case 1 %Erzeugung des Tones mit einer Frequenz von 50Hz
          sound(ton1);
          if ton1 == Stop1;
              break
          end
         
      case 2 %Erzeugung des Tones mit einer Frequenz von 100Hz
          sound(ton2);
          if ton2 == Stop2;
              break
          end    
         
      case 3 %Erzeugung des Tones mit einer Frequenz von 200Hz
          sound(ton3);
          if ton3 == Stop3;
              break
          end    
         
      case 4 %Erzeugung des Tones mit einer Frequenz von 400Hz
          sound(ton4)
          if ton4 == Stop4;
              break
          end
         
      case 5 %Erzeugung des Tones mit einer Frequenz von 600Hz
          sound(ton5);
          if ton5 == Stop5;
              break
          end
         
      case 6 %Erzeugung des Tones mit einer Frequenz von 800Hz
          sound(ton6);
          if ton6 == Stop6;
              break
          end
  end


end


Harald
Forum-Meister

Forum-Meister


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

sollte dann nicht ein input-Befehl in die while-Schleife?

Ich würde auch ein Abbruchkriterium angeben (z.B. als Option 7, und dann break).

Zudem mal menu ansehen. Ist doch angenehmer für die Auswahl?

Grüße,
Harald
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.