1

コードは次のとおりです。

fs = 22050;
x = rand(fs,1);
x = x - mean(x); % get rid of DC offeset

% set comb-filter coefficients
f = 220; % fundamental
L = round(fs/f); % delay length 
coef = 0.99; % IIR coefficient

% build delay vector and filter 
b = [1 zeros(1,L-1) coef];
y = filter(1, b, x);

% create amplitude envelope for output 
decay = 8;
expEnv = exp ((0:(length(y)-1))/length(y));
expEnv = (1./expEnv).^ decay;
fprintf('%d\n',length(expEnv));
fprintf('%d\n', length(y));

% envelope output signal
z = y .* expEnv;
sound(z , fs); % play sound

z=y。*expEnv行の実行を拒否します。printf行は、yとexpEnvの両方が同じ長さ(22050)であることを示しています。

4

1 に答える 1

4

はい...lengthコマンドの危険性。

それらは同じ数の要素を持っていますが、同じ形ではありませ

>> size(y)
ans =
       22050           1
>> size(expEnv)
ans =
           1       22050

これで修正されます:

z = y .* expEnv.';
于 2012-11-09T18:32:33.820 に答える