how to vectorize these for loop?
13 ビュー (過去 30 日間)
古いコメントを表示
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;
採用された回答
Walter Roberson
2017 年 8 月 9 日
編集済み: Walter Roberson
2017 年 8 月 9 日
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 件のコメント
Jan
2017 年 8 月 9 日
編集済み: Jan
2017 年 8 月 9 日
@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 .
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Pie Charts についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!