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

Amplitude erhöhen

 

Ultron
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2016, 14:12     Titel: Amplitude erhöhen
  Antworten mit Zitat      
Hallo, ich bin neu bei Matlab.
Wie kann man die Amplitude eines Sinus erhöhen ?
Wenn sich die Amplitude eines Sinus erhöht, dann erhöht sich ja auch die Lautstärke. Genau das möchte ich erreichen. Ich möchte gerne die Funktion sound verwenden um meinen Sinuston zu hören. Ich möchte den Ton leise beginnen und dann mit der Zeit immer lauter abspielen lassen. Und das für eine bestimmte Zeit. Ist das möglich ? Wenn ja, dann mit einer for - anweisung ?

Würde die Hilfe von Experten sehr schätzen Smile
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.04.2016, 18:28     Titel:
  Antworten mit Zitat      
Hallo,

in deiner Nachricht hatte ich dich ja gebeten, Code zur Verfügung zu stellen. Sei's drum...

Hier nun die ansteigende Amplitude. Wie gesagt, du brauchst nur A als Vektor zu definieren.
Code:
t = 0:0.001:5;
f = 400;
A = linspace(1, 10, numel(t));
y = A .* sin(2*pi*f*t);


Allerdings scheint sound intern zu skalieren. Bei meiner Soundkarte ändert sich die Lautstärke jedenfalls nicht.
Code:


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

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.04.2016, 16:55     Titel:
  Antworten mit Zitat      
Code:

%Erzeugung mehrerer Sinustöne mit Lautstärkenerhöhung
amp=0.0001;      %Amplitude
step = 10;
stepwidth = (1-0.0001)/step;
fs=44100;   %Sample Frequency
samples=1/fs;
d=2;        %Dauer
t=0:samples:(d-samples); %Die Zeit

%Die Angabenbeschreibung. Erscheint in der Commandwindow
disp(sprintf('Sie haben eine Auswahl mehrere Sinustöne zur Verfügung \n Wählen Sie eine Ziffer von 0-7: \n 125Hz(1), 250Hz(2), 500Hz(3), \n 1kHz(4), 2kHz(5),4kHz(6), 8kHz(7), Beenden(0)'));
input('Drücken Sie bitte die Entertaste um fortzufahren')
%Definition der Variable "Weiterlaufen" als true für die while schleife
Weiterlaufen = true;
while Weiterlaufen

disp(' ') %Zeilenabstand in der Commandwindow
Eingabe = input('Wählen Sie einen Ton aus oder drücken Sie 0: ');

  switch Eingabe
      case 1 %Erzeugung des Tones mit einer Frequenz von 32Hz
          amp0 = amp;
          frequenz = 125;
          sinus = sin(2*pi*frequenz*t);
          while 1
             
              ton1 = amp0 * sinus;
              sound(ton1,fs);
              amp0 = amp0 + stepwidth;
              if (amp0 > 1)
                 
                  break;
              end
          end
         
      case 2 %Erzeugung des Tones mit einer Frequenz von 64Hz
           amp0 = amp;
           frequenz = 250;
           sinus = sin(2*pi*frequenz*t);
           while 1
             
              ton2 = amp0 * sinus;
              sound(ton2,fs);
              amp0 = amp0 + stepwidth;
              if (amp0 > 1)
                 
                  break;
              end
           end
         
         
      case 3 %Erzeugung des Tones mit einer Frequenz von 125Hz
           amp0 = amp;
           frequenz = 500;
           sinus = sin(2*pi*frequenz*t);
           while 1
             
              ton3 = amp0 * sinus;
              sound(ton3,fs);
              amp0 = amp0 + stepwidth;
              if (amp0 > 1)
                 
                  break;
              end
           end
         
         
      case 4 %Erzeugung des Tones mit einer Frequenz von 250Hz
           amp0 = amp;
           frequenz = 1000;
           sinus = sin(2*pi*frequenz*t);
           while 1
             
              ton4 = amp0 * sinus;
              sound(ton4,fs);
              amp0 = amp0 + stepwidth;
              if (amp0 > 1)
                 
                  break;
              end
           end
         
         
      case 5 %Erzeugung des Tones mit einer Frequenz von 440Hz
           amp0 = amp;
           frequenz = 2000;
           sinus = sin(2*pi*frequenz*t);
           while 1
             
              ton5 = amp0 * sinus;
              sound(ton5,fs);
              amp0 = amp0 + stepwidth;
              if (amp0 > 1)
                 
                  break;
              end
           end
         
         
      case 6 %Erzeugung des Tones mit einer Frequenz von 1000Hz
          amp0 = amp;
           frequenz = 4000;
           sinus = sin(2*pi*frequenz*t);
           while 1
             
              ton6 = amp0 * sinus;
              sound(ton6,fs);
              amp0 = amp0 + stepwidth;
              if (amp0 > 1)
                 
                  break;
              end
           end
         
       
       case 7 %Erzeugung des Tones mit einer Frequenz von 2000Hz
          amp0 = amp;
           frequenz = 8000;
           sinus = sin(2*pi*frequenz*t);
           while 1
             
              ton7 = amp0 * sinus;
              sound(ton7,fs);
              amp0 = amp0 + stepwidth;
              if (amp0 > 1)
                 
                  break;
              end
           end
         
           
       case 0 %Beendet das Programm
          disp('Programm beendet')
          return;
     
  end

end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Ultron
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.04.2016, 17:02     Titel:
  Antworten mit Zitat      
Ich habe die Nachricht leider zu spät bemerkt. Ich hab jedenfalls dazu ein Code geschrieben und denke das passt einigermaßen.
Das Problem allerdings ist, ich erzeuge zwar eine Ton der leise beginnt und mit der Zeit immer lauter wird, dabei ist aber anscheinend eine Zeitverzögerung dazwischen, dass ein Geräusch erzeugt, das ich nicht haben möchte.
Wie entferne ich das ? Geht das überhaupt ?
Weil ich möchte den Ton fließend laufen lassen.
Also leise beginnen und dann lauter werden lassen. Dann hört es halt auf.
Bei der Kommentarbeschreibung habe ich vergessen, die richtigen Frequenzen zu beschreiben. Wie auch immer...
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.04.2016, 17:02     Titel:
  Antworten mit Zitat      
Hallo,

... und was soll man mit diesem sehr länglichen Code nun anfangen?
Hast du mal über meinen Vorschlag nachgedacht?

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 - 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.