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

Einer .wav- Datei einen Hall verpassen, Fehlermeldung...

 

LetsMakeAudio

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2009, 23:57     Titel: Einer .wav- Datei einen Hall verpassen, Fehlermeldung...
  Antworten mit Zitat      
Hallo zusammen,
ich bin Hobby-Tontechniker und spiel gerade ein wenig mit matlab,...

Für die generierung eines Echos hab ich diesen Code hier gefunden:

Code:

A = 220;
Dh = A*2^(5/12);
C = A*2^(3/12);
B = A*2^(2/12);
G = A*2^(-2/12);
Fis = A*2^(-3/12);
E = A*2^(-5/12);
D = A*2^(-7/12);
pitch    = [D G G A B G Dh B B C Dh C B C Dh A G A B A];
duration = [2 2 1 1 2 2 4  3 1 2 1  1 1 1 2  1 1 1 1 2];
N = 1/4;
fs = 8000;
music = [];
for k=1:length(pitch)
  L = N*fs*duration(k);
  n = 0:L-1;
  w = (2*pi/fs)*pitch(k);
  s = sin(w*n);
  music = [music s];
end
soundsc(music,fs,16);
pause(9)
delay = 300;
a = 0.4;
n_delay = round(1e-3*delay*fs);
echo = a*[zeros(1,n_delay) music];
music_e = [music zeros(1,n_delay)];
music_e= music_e + echo;
soundsc(music_e,fs,16);
 


Ich wollte das dann auf eine .wav datei anwenden, ...

Code:

[music,fs] = wavread('handel'); %einlesen einer Audiodatei "handel.wav"
soundsc(music,fs); %ohne echo

pause(9)
delay = 300; %delay in ms
a = 0.4; %echoanteil
n_delay = round(1e-3*delay*fs); %Verzoegerungsglied
echo = a*[zeros(1,n_delay) music];
music_e = [music zeros(1,n_delay)];
music_e= music_e+ echo;
soundsc(music_e,fs); %singnal mit echo
 


Fehlermeldung:


??? Error using ==> horzcat
All matrices on a row in the bracketed expression must have the
same number of rows.

Error in ==> C:\Dokumente und Einstellungen\phil\Desktop\Digitale Signalverarbeitung\Testdateien\dsplab2_2_test.m
On line 13 ==> echo = a*[zeros(1,n_delay) music];


Wie kann ich das beheben?? Meine Matlabkenntnisse sind "leider" noch
nicht die besten...

Vielen dank im vorraus

Gruß


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2009, 10:43     Titel:
  Antworten mit Zitat      
Code:
echo = a*[zeros(1,n_delay) music];

Da steckt das Problem.

Code:
[zeros(1,n_delay) music]

Dieser Befehl setzt zwei Zeilenvektoren aneinander. Wavread gibt aber einen Spaltenvektor zurück. Bei Stereodateien sogar einen zweispaltigen Vektor.
Einen Spaltenvektor an einen Zeilenvektor zu kleben (was Du machst) geht nicht - das besagt die Fehlermeldung.

Wenn Du das Signal in Stereo verarbeiten willst, musst Du auch die Verzögerung vorne in Stereo machen:
Code:
.

Bleibt das Problem, dass dein music-Vektor ein Spaltenvektor ist. Das kannst Du mit einem 'Hochkomma' beheben:
Code:
ist der Transponierte music-vektor, Zeilen und Spalten sind im Vergleich zu music vertauscht.

Die so bearbeiteten Vektoren kannst Du dann aneinandersetzen und weiterverarbeiten.

Und dann kannst Du nochmal von vorne anfangen und alle Vektoren transponieren und die Operationen anpassen oder einfach bei soundsc wiederum den transponierten music_e-Vektor music_e' übergeben. (Notiz für mich: erst zu ende ausprobieren, dann schreiben ;))
Private Nachricht senden Benutzer-Profile anzeigen
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 10.03.2009, 10:53     Titel:
  Antworten mit Zitat      
wenn echo unbedingt ein spaltenvektor(-matrix) sein muss,
dann geht auch:
Code:

echo = a*[zeros(n_delay,2); music];

_________________

>> why
The computer did it.
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.