Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Определение акустических характеристик звукопоглащающих конструкций на основе измерений в интерферометрах с применением программного обеспечения PULSE

..pdf
Скачиваний:
7
Добавлен:
12.11.2023
Размер:
1.75 Mб
Скачать

4.9.В окне «Function Organizer» на функции автоспектра нажать правой кнопкой мыши и в контекстном меню выбрать

«Properties».

4.10.В появившемся окне можно выбрать другой тип функции, например, взаимный спектр (Cross-spectrum), передаточная функция (Frequency Response) и др. При этом в выпадающем списке «Signal» можно выбрать сигал, для которого строится спектр, а в выпадающем списке «Reference Signal» выбрать опорный сигнал, относительно которого будет осуществляться фазовый сдвиг (рис. 72).

Рис. 72. Выбор типа функции

4.11.Добавить в «Function Organizer» новую функцию. Нажать на ней правой кнопкой мыши и в контекстном меню выбрать «Properties». В появившемся окне в выпадающем списке

«Analyzer» выбрать «CPB Analyzer» (рис. 73).

4.12.В окне «Function Organizer» на добавленной функции нажать левой кнопкой мыши. Появится график автоспектра в тертьоктавных полосах (рис. 74). Чтобы отображался суммар-

61

ный уровень шума в разделе «Total», нажать правой кнопкой мыши на графике и выбрать «Properties». Далее выбрать настройки согласно рис. 31.

Рис. 73. Выбор типа анализатора

Рис. 74. Автоспектр сигнала в третьоктавных полосах

62

Чтобы найти суммарный уровень шума в другом диапазоне частот, необходимо в окне «CPB Analyzer» (см. рис. 71) перезадать параметры нижней центральной частоты «Lower Center Frequency» и верхней центральной частоты «Upper Center Frequency». Предварительно можно изменить ширину полосы пропускания в выпадающем списке «Bandwidth».

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

«Measurements Bar» иконку «Start» (см. рис. 56).

63

РАЗДЕЛ 3. ОБРАБОТКА РЕЗУЛЬТАТОВ ИЗМЕРЕНИЙ

3.1.Конвертация файлов записанных сигналов

иих просмотр в MATLAB

Все записанные сигналы с микрофонов с помощью программного обеспечения PULSE хранятся в файлах формата *.dat и, по сути, представляют собой зависимости в виде «акустическое давление – время». Эти файлы можно загружать в различных приложениях PULSE и работать с ними, например, как это было сделано в приложении Lab Shop в пп. 4.1–4.10 подраздела 2.2 «Измерение образцов ЗПК в “Интерферометре-50”». Однако при попытке просмотреть файл *.dat с помощью программ «Блокнот» или «WordPad» можно обнаружить, что файл имеет неудобочитаемый вид. Поэтому для обработки записанных сигналов вне ПО PULSE файлы *.dat лучше конвертировать в другие форматы. Рассмотрим, как подготовить файл с записанными сигналами для их анализа в программе MATLAB.

1. Конвертация файлов

1.1.Запустить программу PULSE LabShop.

1.2.Выполнить пп. 4.1–4.4 подраздела 2.2 «Измерение образцов ЗПК в “Интерферометре-50”».

1.3.Нажать на любом сигнале правой кнопкой мыши и в контекстном меню выбрать «Export → MAT Files» (см. рис. 61). Задать файлу имя, указать путь к папке, в которую сохранится файл, и нажать кнопку «Сохранить». Через несколько секунд (зависит от количества конвертируемых сигналов и их длительности) заданный файл будет создан.

Если требуется конвертировать сразу несколько файлов *.dat, то лучше воспользоваться следующим способом.

1.4.Запустить программу PULSE Time Data Recorder.

1.5.Выбрать в главном меню «Tools → Export».

1.6.Справа от поля «Select Recorder Files» нажать кнопку «Browse…» и выбрать файлы *.dat.

64

1.7.Справа от поля «Set Destination Folder» нажать кнопку «Destination…» и указать папку, в которую будут сохраняться конвертированные файлы.

1.8.В поле «Select Export Format» выбрать тип файла, в который будут конвертироваться сигналы.

1.9.Нажать кнопку «Export».

2. Просмотр сигналов в MATLAB

2.1.Запустить программу MATLAB.

2.2.В окне «Current Folder» выбрать сохраненный файл в формате *.mat.

2.3.В окне «Workspace» появятся все сигналы, имеющиеся в загруженном файле. Если нажать, например, на переменную Channel_1_Data, то в окне «Variables» появятся значения выбранного сигнала. Отметим, что при этом отсутствуют значения времени. Дело в том, что отчет времени считается начинающимся с 0-й секунды, поэтому для работы с сигналом достаточно знать лишь шаг по времени, с которым записан сигнал. Чтобы его увидеть, нужно нажать в окне «Workspace» на переменную File_Header. В параметре SampleFrequency будет указано, сколько точек записи было сделано за 1 секунду. Соответственно, шаг по времени будет равен 1/SampleFrequency. Аналогично можно посмотреть любой сигнал.

3.2.Перевод записанных сигналов

вчастотную область

Перевод сигналов в частотную область выполняется на основе алгоритма быстрого преобразования Фурье, который реализуется в MATLAB с помощью встроенной функции fft. Вся программа состоит из трех функций:

1) main_program – главная функция пользователя, в которой задаются основные настройки и из которой вызываются другие функции пользователя;

65

2)fft_auto – функция пользователя, в которой вычисляются автоспектры сигналов;

3)fft_cross – функция пользователя, в которой вычисляются взаимные спектры сигналов.

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

впрограмме Excel и использовать в дальнейших задачах обработки результатов экспериментов.

Файл main_program.m

close all

 

clear all

 

%-------------------------------------------------------

 

%

ЗАДАНИЕ ИСХОДНЫХ ДАННЫХ

%-------------------------------------------------------

 

%1) Имя файла с исходными сигналами в формате *.mat name ='record_1';

%2) Номер опорного сигнала, относительно которого

%вычисляется фаза

n_ref = 1;

%3) Число сигналов n_mic = 4;

%4) Шаг по времени [с] в записанных в PULSE сигналах dt = 6.1035*1e-05;

%5) Шаг, с которым делать fft [Гц]

df = 4;

% 6) Перекрытие выборок в долях от 0 до 1 в fft

Overlap = 0.667;

%

-------------------------------------------------------

%

ОСНОВНАЯ ПРОГРАММА

%

-------------------------------------------------------

Data=load(name); %загрузка файла с сигналами

%

--- Считываем сигналы

for i=1:n_mic

 

Signal(:,i) = getfield(Data, ['Channel_' int2str(i)

'_Data']);

end

%

--- Вычисляем авто- и кросс-спектры на основе fft

Gxx = fft_auto(Signal,dt,df,Overlap);

Gxy = fft_cross(Signal,n_ref,dt,df,Overlap);

66

%---

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

Ampl

= sqrt(abs(Gxx)); %амплитуда [Па]

Faza = angle(Gxy);

%фаза [рад]

%-------------------------------------------------------

 

 

%

ВЫВОД В ФАЙЛ АМПЛИТУДЫ

%-------------------------------------------------------

fname = 'Amplituda.txt'; file=fopen(fname,'wt'); f = 0;

n = length(Ampl(:,1)); for i=1:n

fprintf(file,'%12.1f',f);

 

for j=1:n_mic

 

fprintf(file,'%12.6f', Ampl(i,j));

 

end

 

fprintf(file,'\n');

 

f = f+df;

end

fclose(file);

%

-------------------------------------------------------

%

ВЫВОД В ФАЙЛ ФАЗЫ

%

-------------------------------------------------------

fname = 'Faza.txt'; file=fopen(fname,'wt'); f = 0;

n = length(Faza(:,1)); for i=1:n

fprintf(file,'%12.1f',f); for j=1:n_mic

fprintf(file,'%12.6f',Faza(i,j)); end

fprintf(file,'\n'); f = f+df;

end fclose(file);

Файл fft_auto.m

function Gxx = fft_auto(Signal,dt,df,Overlap)

n_length = length(Signal(:,1)); T = 1/df; %длина периода [с]

Time = dt*(n_length-1); %время записи всего сигнала [с]

67

%--- Число точек в одной выборке

N = T/dt; i=1;

while 2^i<N i=i+1;

end

N = 2^(i-1);

%--------------------------------------------------

% FFT %--------------------------------------------------

nn = length(Signal(1,:));

for ii=1:nn %цикл по сигналам

Sum = 0; Tn=0; k=1; i=1;

while Tn<=Time %цикл по выборкам Tn = Tn + N*dt;

if Tn>Time break;

end

%--- Применяем окно Ханнинга

tt = Signal(k:k+N-1,ii).*hanning(N); %--- Быстрое преобразование Фурье

Y = fft(tt,N);

%-- Накапливаем для взаимного спектра сумму по выборкам

Sum = Sum + conj(Y(1:N/2)).*Y(1:N/2); i=i+1; %подcчет числа выборок

%--- Учет перекрытия k = k+N;

Tn = Tn - T*Overlap;

k = k - int32(Overlap*N); if(k+N > n_length)

break; end end

%--- Усреднение по выборкам

Sxx = Sum/(i-1);

%--- Нормировка и масштабирование с учетом окна Ханнинга

Gxx(:,ii) = Sxx.*(2/N*(2*sin(pi/4)))^2; end

end

68

Файл fft_cross.m

function Gxy = fft_cross(Signal,n_ref,dt,df,Overlap)

n_length = length(Signal(:,1)); T = 1/df; %длина периода [с]

Time = dt*(n_length-1); %время записи всего сигнала [с]

%--- Число точек в одной выборке

N = T/dt; i=1;

while 2^i<N i=i+1; end

N = 2^(i-1);

%

--------------------------------------------------

%

FFT ДЛЯ ОПОРНОГО СИГНАЛА

%--------------------------------------------------

 

Tn=0;

k=1;

i=1;

while Tn<=Time %цикл по выборкам Tn = Tn + N*dt;

if Tn>Time break; end

%--- Применяем окно Ханнинга

t_ref = Signal(k:k+N-1,n_ref).*hanning(N); X_ref(:,i) = fft(t_ref,N);

i=i+1;

%--- Учет перекрытия k = k+N;

Tn = Tn - T*Overlap;

k = k - int32(Overlap*N); if(k+N > n_length) break;

end

end

 

%--------------------------------------------------

 

%

FFT ДЛЯ ОСТАЛЬНЫХ СИГНАЛОВ

%--------------------------------------------------

nn = length(Signal(1,:));

69

for ii=1:nn %цикл по сигналам

Sum=0;

Tn=0;

k=1;

i=1;

while Tn<=Time %цикл по выборкам

Tn = Tn + N*dt; if Tn>Time break;

end

%--- Применяем окно Ханнинга

tt = Signal(k:k+N-1,ii).*hanning(N); %--- Быстрое преобразование Фурье

Y = fft(tt,N);

%--- Накапливаем для взаимного спектра сумму по выборкам

Sum = Sum + conj(X_ref(1:N/2,i)).*Y(1:N/2); i=i+1; %подсчет числа выборок

%--- Учет перекрытия k = k+N;

Tn = Tn - T*Overlap;

k = k - int32(Overlap*N); if(k+N > n_length)

break; end end

%--- Усреднение по выборкам

Sxy = Sum/(i-1);

%--- Нормировка и масштабирование с учетом окна Ханнинга

Gxy(:,ii) = Sxy.*(2/N*(2*sin(pi/4)))^2; end

end

70

Соседние файлы в папке книги