exponenta event banner

Анализ данных по S-параметрам файлов РЧ-данных

В этом примере показано, как выполнить статистический анализ набора файлов данных S-параметров с использованием величины, среднего значения и стандартного отклонения (STD).

Сначала прочитайте двенадцать файлов S-параметров, где эти файлы представляют двенадцать аналогичных RF-фильтров в рабочей области MATLAB ® и постройте их график. Затем постройте график и проанализируйте характеристики полосы пропускания этих фильтров, чтобы убедиться, что они соответствуют статистическим нормам.

Считывание S-параметров из файлов данных фильтра

Используйте встроенные функции RF Toolbox™ для чтения набора файлов данных S-Parameter. Для каждого фильтра постройте график значений S21 дБ. Имена файлов AWS_Filter_1.s2p через AWS_Filter_12.s2p. Эти файлы представляют 12 фильтров полосы пропускания с аналогичными спецификациями.

numfiles = 12;
filename = "AWS_Filter_"+(1:numfiles)+".s2p";    % Construct filenames
S = sparameters(filename(1));                    % Read file #1 for initial set-up
freq = S.Frequencies;                            % Frequency values are the same for all files
numfreq = numel(freq);                           % Number of frequency points
s21_data = zeros(numfreq,numfiles);              % Preallocate for speed
s21_groupdelay = zeros(numfreq,numfiles);        % Preallocate for speed

% Read Touchstone files
for n = 1:numfiles
    S = sparameters(filename(n));
    s21 = rfparam(S,2,1);
    s21_data(:,n) = s21;
    s21_groupdelay(:,n) = groupdelay(S,freq,2,1); 
end
s21_db = 20*log10(abs(s21_data));

figure
plot(freq/1e9,s21_db)
xlabel('Frequency (GHz)')
ylabel('Filter Response (dB)')
title('Transmission performance of 12 filters')
axis on
grid on

Figure contains an axes. The axes with title Transmission performance of 12 filters contains 12 objects of type line.

Визуализация полосы пропускания фильтра

В этом разделе найдите, сохраните и постройте график S21 данных из диапазона нисходящей линии связи AWS (2,11 - 2,17 ГГц).

idx = (freq >= 2.11e9) & (freq <= 2.17e9);
s21_pass_data = s21_data(idx,:);
s21_pass_db = s21_db(idx,:);
freq_pass_ghz = freq(idx)/1e9; % Normalize to GHz

plot(freq_pass_ghz,s21_pass_db)
xlabel('Frequency (GHz)')
ylabel('Filter Response (dB)')
title('Passband variation of 12 filters')
axis([min(freq_pass_ghz) max(freq_pass_ghz) -1 0])
grid on

Figure contains an axes. The axes with title Passband variation of 12 filters contains 12 objects of type line.

Базовый статистический анализ данных S21

Чтобы определить, следуют ли данные нормальному распределению и есть ли отклонения, выполните статистический анализ величины и групповой задержки всех наборов данных S21 полосы пропускания.

abs_S21_pass_freq = abs(s21_pass_data);

Вычислите среднее значение и STD величины всего набора данных S21 полосы пропускания.

mean_abs_S21 = mean(abs_S21_pass_freq,'all')
mean_abs_S21 = 0.9289
std_abs_S21 = std(abs_S21_pass_freq(:))
std_abs_S21 = 0.0104

Вычислите среднее значение и STD амплитудной характеристики полосы пропускания в каждой точке частоты. Это определяет, следует ли данные нормальному распределению.

mean_abs_S21_freq = mean(abs_S21_pass_freq,2);
std_abs_S21_freq = std(abs_S21_pass_freq,0,2);

Постройте график всех необработанных данных величины полосы пропускания как функции частоты, а также верхнего и нижнего пределов, определенных базовым статистическим анализом.

plot(freq_pass_ghz,mean_abs_S21_freq,'m')
hold on
plot(freq_pass_ghz,mean_abs_S21_freq + 2*std_abs_S21_freq,'r')
plot(freq_pass_ghz,mean_abs_S21_freq - 2*std_abs_S21_freq,'k')
legend('Mean','Mean + 2*STD','Mean - 2*STD')
plot(freq_pass_ghz,abs_S21_pass_freq,'c','HandleVisibility','off')
grid on
axis([min(freq_pass_ghz) max(freq_pass_ghz) 0.9 1])
ylabel('Magnitude S21')
xlabel('Frequency (GHz)')
title('S21 (Magnitude) - Statistical Analysis')
hold off

Figure contains an axes. The axes with title S21 (Magnitude) - Statistical Analysis contains 3 objects of type line. These objects represent Mean, Mean + 2*STD, Mean - 2*STD.

Постройте график гистограммы для данных величины полосы пропускания. Это определяет, следует ли верхнему и нижнему пределам данных нормальное распределение.

histfit(abs_S21_pass_freq(:))
grid on
axis([0.8 1 0 100])
xlabel('Magnitude S21')
ylabel('Distribution')
title('Compare filter passband response vs. a normal distribution')

Figure contains an axes. The axes with title Compare filter passband response vs. a normal distribution contains 2 objects of type bar, line.

Получить групповую задержку данных S21 полосы пропускания. Использовать внутренние 60% полосы пропускания для статистического анализа группоразрядника и нормализовать его до 10 нс.

idx_gpd = (freq >= 2.13e9) & (freq <= 2.15e9);
freq_pass_ghz_gpd = freq(idx_gpd)/1e9; % Normalize to GHz
s21_groupdelay_pass_data = s21_groupdelay(idx_gpd,:)/10e-9; % Normalize to 10 ns

Вычислите среднее значение частоты и стандартное отклонение нормализованной групповой задержки. Все данные собираются в один вектор для анализа изменений.

mean_grpdelay_S21 = mean(s21_groupdelay_pass_data,2);
std_grpdelay_S21 = std(s21_groupdelay_pass_data,0,2);
all_grpdelay_data = reshape(s21_groupdelay_pass_data.',numel(s21_groupdelay_pass_data),1);

Постройте график всех нормализованных данных групповой задержки полосы пропускания как функции частоты, включая верхний и нижний пределы, определенные базовым статистическим анализом.

plot(freq_pass_ghz_gpd,mean_grpdelay_S21,'m')
hold on
plot(freq_pass_ghz_gpd,mean_grpdelay_S21 + 2*std_grpdelay_S21,'r')
plot(freq_pass_ghz_gpd,mean_grpdelay_S21 - 2*std_grpdelay_S21,'k')
legend('Mean','Mean + 2*STD','Mean - 2*STD')
plot(freq_pass_ghz_gpd,s21_groupdelay_pass_data,'c','HandleVisibility','off')
grid on
xlim([min(freq_pass_ghz_gpd) max(freq_pass_ghz_gpd)])
ylabel('Normalized group delay S21')
xlabel('Frequency (GHz)')
title('S21 (Normalized group delay) - Statistical Analysis')
hold off

Figure contains an axes. The axes with title S21 (Normalized group delay) - Statistical Analysis contains 3 objects of type line. These objects represent Mean, Mean + 2*STD, Mean - 2*STD.

Постройте график гистограммы для нормализованных данных задержки группы полосы пропускания. Это определяет, следует ли верхнему и нижнему пределам данных равномерное распределение.

histogram(all_grpdelay_data,35)
grid on
xlabel('Group delay S21 (seconds)')
ylabel('Distribution')
title('Histogram of the normalized group delay')

Figure contains an axes. The axes with title Histogram of the normalized group delay contains an object of type histogram.

Анализ дисперсии (ANOVA) данных

Выполните ANOVA для определения величины данных S21 полосы пропускания.

anova1(abs_S21_pass_freq.',freq_pass_ghz);

Figure One-way ANOVA contains objects of type uicontrol.

ylabel('Magnitude S21')
xlabel('Frequency (GHz)')
ax1 = gca;
ax1.XTick = 0.5:10:120.5;
ax1.XTickLabel = {2.11,'',2.12,'',2.13,'',2.14,'',2.15,'',2.16,'',2.17};
title('Analysis of variance (ANOVA) of passband S21 magnitude response')
grid on

Figure contains an axes. The axes with title Analysis of variance (ANOVA) of passband S21 magnitude response contains 847 objects of type line.

Выполните ANOVA для нормализованных данных S21 полосы пропускания groupdelay.

anova1((s21_groupdelay_pass_data).',freq_pass_ghz_gpd);

Figure One-way ANOVA contains objects of type uicontrol.

ylabel('Normalized group delay S21')
xlabel('Frequency (GHz)')
ax2 = gca;
ax2.XTick = 0.5:4:40.5;
ax2.XTickLabel = {2.13,2.132,2.134,2.136,2.138,2.14,2.142,2.144,2.146,2.148,2.15};
title('Analysis of variance (ANOVA) of passband S21 groupdelay (normalized)')
grid on

Figure contains an axes. The axes with title Analysis of variance (ANOVA) of passband S21 groupdelay (normalized) contains 287 objects of type line.

Связанные темы