В качестве примера вы можете получить частотную характеристику от freqz
путем добавления выходных аргументов. Когда вы вызываете freqz
с выходными аргументами, он не создает график. Затем вы можете использовать semilogx
и сами создавать ярлыки.
Вот пример
fSample = 48e3;
[H, w] = freqz([1 2 1]);
Hdb = 20*log10(abs(H));
semilogx(w/pi*fSample/2, Hdb, '-r', 'LineWidth', 2);
ylabel('Magnitude (dB)');
% Play with the labels to make them look like the original picture
a = gca;
t2 = a.XTick(1:(end-1))*2;
ticks = [a.XTick; [t2 0]];
a.XTick = ticks(1:(end-1));
a.XTickLabelMode = 'manual';
a.XTickLabels = genLabels(a.XTick);
grid on;
genLabels
определяется как
function lbls = genLabels(ticks)
lbls = cell(numel(ticks),1);
for idx=1:numel(ticks)
d = floor(log10(ticks(idx)));
unit = floor(d/3);
switch unit
case 0
unitLbl = '';
case 1
unitLbl = 'k';
case 2
unitLbl = 'M';
case 3
unitLbl = 'G';
case 4
unitLbl = 'T';
otherwise
error('Unsupported');
end
lbls{idx} = sprintf('%d%sHz', round(ticks(idx)/(10^(3*unit))), unitLbl);
end
end
Выходной сюжет
Изменить: Я добавил ось х масштабирования на основе некоторой заранее определенной частоте дискретизации к примеру.
'semilogx (х, у)' будет строить с логарифмической шкалой в оси х – jodag
Как мы привносим данные из freqz? Ось X должна быть в масштабе шкалы и оси Y в дБ. –
Что касается действительности ваших графиков: если вы используете простую настройку громкоговорителя-микрофона для ваших измерений, большинство пиков и вали обычно определяются вашим громкоговорителем, а не вашим SM57. Считаете ли вы сначала использование калиброванного измерительного микрофона, чтобы, наконец, вычесть частотную характеристику громкоговорителя? –