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 in einem Saegezahnsignal stimmt nicht

 

korpik
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 12.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.01.2011, 16:43     Titel: Amplitude in einem Saegezahnsignal stimmt nicht
  Antworten mit Zitat      
Hallo,

Ich sitze jetzt schon seit Tagen an dieser kleinen Funktion, die ein logarythmisch abklingendes Saegezahnsignal erzeugt.
Sie macht mir ein Problem:

Wenn ich eine Amplitude von 1 eingebe kommt eine von 0,irgendwas heraus, eine Amplitude von 2 ergibt genau eine Amplitude von 1 und eine Amplitude von 3 ergibt eine von 9. Nach meinem Verständnis sollte, wenn ich eine Amplitude von 1 eingebe auch eine von 1 herauskommen.
Die Formel zur Fouriertransformation wurde mir vorgegeben und da ich letztes Semester nicht sehr fleißig war steige ich da auch nicht durch, vielleicht sieht ja einer von euch wo der Fehler liegt.

Wenn jemand einen Tip hat wäre ich wirklich dankbar.

Code:

function saegezahnhannes(A,f,f_s,s,a)        
%Saegezahn erzeugen,uebergebe Amplitude,Frequenz,Samplerate,Dauer,Fouriekomponentenanzahl
%A=input('Geben Sie eine Amplitude ein');  
%f=input('Geben Sie eine Frequenz ein') ; %Frequenz
%f_s=input ; %Abtastfrequenz
%s=input('Geben Sie die Dauer des Signales in Sekunden ein'); % Dauer in Sekunden
%a=input('Geben Sie die Anzahl der Fouriekomponenten ein');
t=(0:f_s^-1:s)'; %x Achse von 0 bis s in f_s^-1 Schritten      
n=1;  %Zaehler in der For-Schleife

argument = nargin ; %definiert anzahl der eingegebenen argumente
aa = 0   ;
ff = f    ;
Obergrenze = (f_s/2)+1 ;  %maximale Frequenzhöhe

if (argument==4);    % verzweigung wenn nur 4 argumente eingegeben wurden
    while (ff < Obergrenze);
        aa = aa+1 ;             % aa wird solange mit 1 addiert bis die jeweils verdoppelte freq. die Obergrenze erreicht.
        ff = 2*ff;
    end
    a = aa   ;   %aa wird zu a gemacht also die anzahl der Fouriekomponenten
end
   

y=zeros(a,f_s^-1); % Matrix zum speichern der Sinusschwingungen.

   
for m=1:a;     %  a addierte Schwingungen
   
y(m,1:(f_s*s)+1)=(A/2)*((-A/(pi*n))*sin((n*2*pi*f)*t));
 
n=n+1;
end
signal_a=sum(y);    % alle Spalten der a-zeiligen Matrix werden addiert.

dd = logspace (0,-3,(f_s*s+1));  %erzeugt einen vektor in der größe des signals mit werten zwischen 0 und A


signal = (signal_a.*dd);     %multipliziert das signal mit dd um es ausfaden zu lassen

disp(sprintf('Sie sehen ein Rechteckssignal der Frequenz %f',f));
disp(sprintf('dargestellt mit %f Sinusschwingungen',a));
disp(sprintf('im Zeit Intervall von 0 bis %f Sekunden',s));

plot (signal); %plottet signal

 sound(signal,f_s); % gibt signal aus
 
[/code]
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.