This question is closed. Reopen it to edit or answer.

speeding up the proccess

1 view (last 30 days)
tony karamp
tony karamp on 25 Apr 2013
Closed: MATLAB Answer Bot on 20 Aug 2021
I have a wavfile that I read with 'wavread' and I want to apply some weighting function on each channel. everything is working ok, but it takes almost 2 minutes to through the for loop. Any ideas as to how to speed things up? the sampling frequency fs=32kHz and duration is 10secs.
[y,fs] = wavread('C:\Desktop\testwavfile')
y = y';
t =0:1/fs:length(y)/fs-1/fs;
t = t';
gain1 = 0:4/fs:40-4/fs; %this is level
gain2 = 20:4/fs:60-4/fs;
gain3 = 40:-4/fs:0+4/fs;
t1 = 8*fs;
slope = (gain2(1)-gain2(t1))/t1;
con = slope+gain2(1);
slopeout = (gain1(5*fs)-gain1(t1))/t1;
conout = slopeout+gain1(5*fs);
%creates a weighting function
for iTime = 1:t1
temp(iTime) = -slope*iTime+con; %#ok<*SAGROW>
out(iTime) = -slopeout*iTime+conout;
temp(t1+1:length(y)) = 6.5*gain3(t1+1:length(y));
out(t1+1:length(y)) = 4*gain3(t1+1:length(y));
tony karamp
tony karamp on 25 Apr 2013
it did the trick. I don't know how I forgot to pre-allocate, I usually do it.
Thanks a bunch!

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!