53 lines
887 B
Mathematica
53 lines
887 B
Mathematica
|
% twotone.m
|
||
|
% David Rowe Aug 2012
|
||
|
% Used to experiment with combining phase of two tones
|
||
|
|
||
|
function cbphase
|
||
|
|
||
|
Wo = 100.0*pi/4000;
|
||
|
L = floor(pi/Wo);
|
||
|
phi = zeros(1,L);
|
||
|
|
||
|
% two harmonics
|
||
|
|
||
|
a = 20; b = 21;
|
||
|
|
||
|
% set up phases to whatever
|
||
|
|
||
|
phi(a) = -pi;
|
||
|
phi(b) = -pi/2;
|
||
|
|
||
|
% synthesis the two-tone signal
|
||
|
|
||
|
N = 16000;
|
||
|
Nplot = 250;
|
||
|
s = zeros(1,N);
|
||
|
|
||
|
for m=a:b
|
||
|
s_m = cos(m*Wo*(0:(N-1)) + phi(m));
|
||
|
s = s + s_m;
|
||
|
endfor
|
||
|
|
||
|
% now our theory says that this signal should be the same perceptually
|
||
|
|
||
|
phi_(a) = (phi(a) - phi(b))/2;
|
||
|
phi_(b) = (phi(b) - phi(a))/2;
|
||
|
|
||
|
s_ = zeros(1,N);
|
||
|
for m=a:b
|
||
|
s_m = cos(m*Wo*(0:(N-1)) + phi_(m));
|
||
|
s_ = s_ + s_m;
|
||
|
endfor
|
||
|
|
||
|
% plot them and see if envelope has the same phase, but "carriers"
|
||
|
% have different phase
|
||
|
|
||
|
figure(1);
|
||
|
clf;
|
||
|
subplot(211);
|
||
|
plot(s(1:Nplot));
|
||
|
subplot(212);
|
||
|
plot(s_(1:Nplot),'r');
|
||
|
endfunction
|
||
|
|