Borrar filtros
Borrar filtros

how to vectorize these for loop?

2 visualizaciones (últimos 30 días)
serena dsouza
serena dsouza el 9 de Ag. de 2017
Editada: Jan el 9 de Ag. de 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 comentario
José-Luis
José-Luis el 9 de Ag. de 2017
Please edit your code to make it easy to read.

Iniciar sesión para comentar.

Respuesta aceptada

Walter Roberson
Walter Roberson el 9 de Ag. de 2017
Editada: Walter Roberson el 9 de Ag. de 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 comentarios
serena dsouza
serena dsouza el 9 de Ag. de 2017
thank you
Jan
Jan el 9 de Ag. de 2017
Editada: Jan el 9 de Ag. de 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 .

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Measurements and Spatial Audio en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by