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

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

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

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

Используйте встроенные функции RF Toolbox™ для чтения набора файлов данных S-параметра. Поскольку каждый фильтр строит значения дБ 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 object. The axes object 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 object. The axes object 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 object. The axes object 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 object. The axes object with title Compare filter passband response vs. a normal distribution contains 2 objects of type bar, line.

Получите groupdelay полосы пропускания данные S21. Используйте внутренние 60% bandwith для статистического анализа groupdelay и нормируйте его к 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);

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

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 object. The axes object 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 object. The axes object with title Histogram of the normalized group delay contains an object of type histogram.

Дисперсионный анализ (Дисперсионный Анализ) данных

Выполните Дисперсионный Анализ на величине полосы пропускания данные 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 object. The axes object with title Analysis of variance (ANOVA) of passband S21 magnitude response contains 847 objects of type line.

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

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 object. The axes object with title Analysis of variance (ANOVA) of passband S21 groupdelay (normalized) contains 287 objects of type line.

Похожие темы