Matlab: changing frequency of a .wav file

Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
1 reply · 5K views
brushman
Messages
112
Reaction score
1

Homework Statement


Write a script which plays a Doppler shifted version of a WAV file.

The Attempt at a Solution



This is the code for a doppler shifted single frequency:
Code:
vs = 1100; % speed of sound in feet per second
v0 = s*22/15; % speed of the vehicle in feet per second
fs = 10000; % sampling frequency
ts = 1/fs; % the sampling period
f0 = 440;
td = d/vs; % this is the time for sound to move the distance d
r = v0/vs; % this ratio should be much less than one of course
t1 = sqrt(1 - td^2)/r -1; % time vehicle passes you
t = [ t1-3: ts: t1+3]; % a time base for the signal, with 3 seconds each side
a = (r^2)*(t-t1)/(1-(r^2));
b = ((td^2)+(r^2).*(t-t1).^2)./(1-(r^2));
tau = ((-1)*(2.*a)+sqrt(((2.*a).^2)+(4).*(b)))/(2); % quad form to solve for tau
y = .5 * sin(2*pi*f0*(t-tau));

What I need is to shift an entire wav file. I tried just setting f0 = wavread('file') but I get an error saying out of memory. Then when I change the f0*(t-tau) to f0.*(t-tau) I get an error saying matrix dimensions must agree.

I'm not really sure which way it's supposed to be, anyways.

Thanks.
 
Physics news on Phys.org
I'm not sure what you're doing exactly; you need to provide a complete code listing. Something is wrong with your setup if you are unable to use wavread to even read the file.