how to vectorize these for loop?
11 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
serena dsouza
am 9 Aug. 2017
Bearbeitet: Jan
am 9 Aug. 2017
clc;
clear all;
close all;
tic;
[s,fs]=audioread('sample.wav')
fdatool
l=length(s);
figure('name','speechsignal');
subplot(3,3,1);
plot (s);
title('speech signal');
xlabel('samples---->');
ylabel('amplitudes---->');
t=(0:1:l-1)/fs;
subplot(3,3,2);
plot(t,s);
title('Speech signal on time axis');
xlabel('time(s) ---->');
ylabel('Amplitude ---->');
f_d=0.1;
f_s=floor(l*f_d);
overlap=f_s/2;
no_f=floor((l/f_s)*2-1);
M=zeros(f_s,no_f);
for j=1:no_f;%i=1:frame size;
for i=1:f_s;%j=1:no of frames;
M(i,j)=s(((j-1)*overlap)+i);
end;
end;
1 Kommentar
Akzeptierte Antwort
Walter Roberson
am 9 Aug. 2017
Bearbeitet: Walter Roberson
am 9 Aug. 2017
First improvement:
for j=1:no_f %i=1:frame size; j=1:no of frames;
M(1:f_s, j)=s(((j-1)*overlap)+(1:f_s));
end
Second improvement:
M = s( bsxfun(@plus, (1:f_s).', ((1:no_f)-1)*overlap ) );
2 Kommentare
Jan
am 9 Aug. 2017
Bearbeitet: Jan
am 9 Aug. 2017
@serena dsouza: Further improvement: Omit the brute celaring header clc; clear all; close all;, which is cargo cult only and wastes a lot of time, when all functions must be imported from the slow hard disk afterwards. See Stephen's comment .
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Pie Charts finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!