Я работаю над проектом, в котором используется закон касательной для локализации фантомного источника в типичной стереоустановке (два громкоговорителя под углом 60º). Поскольку закон касательной показывает связь между углом фантомного изображения и усилением громкоговорителей, моя цель состоит в том, чтобы построить амплитудную характеристику в дБ одного громкоговорителя при разных углах фантомного источника, вот код, который отлично работает с исходным позиционированием:
%-----stereo panning------%
%variables:
Fs = 44100;
theta = 25; %virtual source
phi = 30; %loudspeaker
g(1) = 1; %L gain
g(2) = -(tan(theta)-tan(phi)) / (tan(theta)+tan(phi));
%sum of gains has to be normalized
g = g/sqrt(sum(g.^2));
signal=mod([1:20000]',200)/200; %signal
loudsp_sig=[signal*g(1) signal*g(2)]; %panning
soundsc(loudsp_sig,Fs); %play audio
Я попытался создать тета-вектор и попытался построить график (тета, 20 * log (g (2)), также используя таблицу, но либо это дает мне ошибку, либо отображает только одну точку, я явно что-то здесь упускаю.
g(2)
может быть только одним значением. Это единый индекс. Вы не можете ожидать, что один индекс будет хранить что-либо, кроме скаляра, и, следовательно, у вас есть ошибки. - person Sardar Usama   schedule 22.01.2019g = g./sqrt(...)
, а неg = g/sqrt(...)
для разделения по элементам. - person Wolfie   schedule 23.01.2019