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

Sinusförmiges Audiosignal generieren und plotten

 

Unrealmirakulix
Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 11.11.12
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 11.11.2012, 18:53     Titel: Sinusförmiges Audiosignal generieren und plotten
  Antworten mit Zitat      
Hallo,

ich müsste ein sinusförmiges Audiosignal generieren und plotten.

Frequenz 1000 Hz
Pegel 60 dB SPL

Anschließend die FFT erstellen und plotten.

Dann eine wav-Datei erstellen.

+ umgekehrt: externe wav als Inout auf 60 dB SPL -> skalieren + plotten + Leistungsspektrum inkl. Skalierung.

Irgendwas scheine ich schon bei der Sinus-Generierung falsch zu machen...

Hier mein bisheriger Code:

Code:
clear all;
close all;
clc;

% load('Nuss.wav')
% load('fcmg0-W1-t.wav')

f0 = 1000;
T0 = 1/f0;

t = -10000:0.01:10000;
x = 2*pi*f0*t;
A = 1;

y = A*sin(x);
plot(t,y), grid on
ylabel('Amplitude A')
xlabel('Zeit t [s]')
axis([0 4*pi -1 1])

% plot((fft(y)), grid on % FFT
% ylabel('Amplitude')
% xlabel('Zeit s]')
Private Nachricht senden Benutzer-Profile anzeigen


Unrealmirakulix
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 11.11.12
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 11.11.2012, 19:58     Titel:
  Antworten mit Zitat      
So inzwischen steht der Sinus. Hab Matlab wohl immer nur die Nullstellen berechnen lassen ^^

Code:
clear all;
close all;
clc;

% Aufgabe 1

f0 = 1000;
T0 = 1/f0;

% t = -1:0.000001:1;
% s = 2*pi*f0*t;
A = db2mag(60);

% y = A*sin(s);
% figure;
% plot(t, y), grid on
% title('1kHz-Sinus @ 60 dB SPL')
% ylabel('Amplitude A')
% xlabel('Zeit t')
% axis([0 0.01 -A A])

% Parameter
Nfft = 1024; % Anzahl Abtastwerte für die FFT
fa = 20000; % Abtastfrequenz
fmax = 0.5*fa; % maximale Frequenz die ohne Aliasing aufgelöst werden kann

% Testsignal berechnen
t = (0:(Nfft-1)) / fa; % Zeitachse
s = A*sin(2*pi*f0*t); % Sinus mit Frequenz f

% Testsignal plotten
figure(1); clf;
subplot(2,1,1);
plot(t, s);
xlabel('Zeit');

% Absolutwert der FFT über der Frequenz plotten
subplot(2,1,2);
sfft = abs(fft(s));
plot(fa * (0:(Nfft/2-1)) / Nfft, sfft(1:Nfft/2)), grid on
title('FFT des 1kHz-Sinus @ 60 dB SPL')
xlabel('Frequenz');

wavwrite(s, f0, '1kHz-Sinus')

% Aufgabe 2a

% load('Nuss.wav')
% load('fcmg0-W1-t.wav')

 


Jedoch klappt der wav-Export nicht wie gewünscht. Eine datei mit dem Namen bekomme ich zwar. Zu hören ist aber nichts, besonders nicht dieses Knacken, dass man angeblich hören soll.

Hmm...
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: 12.11.2012, 04:19     Titel:
  Antworten mit Zitat      
Hallo Unrealmirakulix,

Ich bekomme mit Deinem Code zunächst eine Warnung:

Warning: Data clipped during write to file:1kHz-Sinus

"help wavwrite" erklärt warum: es werden Werte zwischen -1 und +1 erwartet.

Trotzdem höre ich einen Ton und zum Ende auch ein Knacken, wenn ich das erstellte WAV-File abspiele. Vielleicht musst Du noch die Lautstärke raufdrehen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Unrealmirakulix
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 11.11.12
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 12.11.2012, 11:24     Titel:
  Antworten mit Zitat      
ja die Warnung hab ich auch, aber die wav-Datei ist bei maximaler Lautstärke komplett still. Die anderen wav-Files, die ich anschließend importieren, skalieren (auf 60 dB SPL) und plotten soll, gehen wunderbar im VLC-Player.
Wie sieht es mit de Plotten der importierten wav-Dateien aus stimmt das oder macht die Funktion was anderes / spezielleres?
Private Nachricht senden Benutzer-Profile anzeigen
 
Unrealmirakulix
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 11.11.12
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 12.11.2012, 11:40     Titel:
  Antworten mit Zitat      
So jetzt das Leistungsspektrum. Stimmt das so? Skalierung ok?

Code:
% Leistungsspektrum

figure;

nfft = 2^nextpow2(length(y));
Pxx = abs(fft(y,nfft)).^2/length(y)/fs;

nfft_2 = 2^nextpow2(length(y_2));
Pxx_2 = abs(fft(y_2,nfft)).^2/length(y_2)/fs;

% Create a single-sided spectrum
Hpsd = dspdata.psd(Pxx(1:length(Pxx)/2),'fs',fs);
subplot(2,1,1);
plot(Hpsd);

% Create a single-sided spectrum (2)
Hpsd = dspdata.psd(Pxx(1:length(Pxx_2)/2),'fs',fs);
subplot(2,1,2);
plot(Hpsd);
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: 12.11.2012, 11:46     Titel:
  Antworten mit Zitat      
Hallo Unrealmirakulix,

Wenn Du eine Warnung bekommst, solltest Du unbedingt, auf jeden Fall und ganz sicher dafür sorgen, dass der Grund für diese Warnung behoben wird, vor allem, wenn das programm sowieso Probleme macht.
Zumindest solltest Du aber die Warnung beim Posten im Forum erwähnen. Je leichter man es den Antwortenden macht, desto ehe bleiben sie motiviert ihre Zeit zu opfern.

Das WAV-File ist nicht still. Das WAV-File ist sicherlich exakt das gleiche, dass auf meinem Rechner einen Ton produziert. Möglicherweise verwendest Du den System-Lautsprecher, der zu niedrige Frequenzen nicht wiedergeben kann?
Du kannst das WAV-File ja per WAVREAD wieder importieren und per PLOT anzeigen lassen, ob das Signal sichtbar ist. Falls ja, liegt die Stille an Deinem Programm zum Abspielen.

Zitat:
Wie sieht es mit de Plotten der importierten wav-Dateien aus stimmt das oder macht die Funktion was anderes / spezielleres?

Macht die Funktion etwas anderes als was?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Unrealmirakulix
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 11.11.12
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 12.11.2012, 13:35     Titel:
  Antworten mit Zitat      
Ich soll laut Angabe auf meinem Übngsblatt die Signale skaliren und plotten auf einen Schallpegel 60 dB SPL.

Meine Frage ist nun, ob die Funktion die ich nach etwas Recherche gefunden habe, auch das macht.
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.