Effacer les filtres
Effacer les filtres

how to vectorize these for loop?

2 vues (au cours des 30 derniers jours)
serena dsouza
serena dsouza le 9 Août 2017
Modifié(e) : Jan le 9 Août 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 commentaire
José-Luis
José-Luis le 9 Août 2017
Please edit your code to make it easy to read.

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 9 Août 2017
Modifié(e) : Walter Roberson le 9 Août 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 ) );
Third improvement: replace much of your code with a call to buffer()
  2 commentaires
serena dsouza
serena dsouza le 9 Août 2017
thank you
Jan
Jan le 9 Août 2017
Modifié(e) : Jan le 9 Août 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 .

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Measurements and Spatial Audio dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by