Анализ данных по 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.

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

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

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) данных

Выполните Дисперсионный Анализ по величине данных 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.

Выполните Дисперсионный Анализ на нормализованных данных группового 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. The axes with title Analysis of variance (ANOVA) of passband S21 groupdelay (normalized) contains 287 objects of type line.

Похожие темы