Анализ частичной когерентности вибрационных сигналов в MATLAB

Я собрал 3 сигнала ускорения относительно времени и 1 сигнал уровня звукового давления относительно времени. Я создал систему с несколькими входами и одним выходом, где сигналы ускорения являются входом, а сигнал уровня звукового давления - выходом. Я хочу вычислить частичную согласованность по частоте между каждым входом и выходом. Частичная согласованность отличается от обычно рассчитываемой согласованности. Я написал код для этого на MATLAB, но я не уверен, правильно это или нет теоретически. Поэтому я был бы очень признателен, если бы кто-нибудь мог просмотреть мой код. Спасибо.

Более того, мне было интересно, есть ли в MATLAB или Python код, который я могу использовать для анализа частичной когерентности для анализа вибрации. Спасибо.

      %% Loading Data
Data = readtable('Data');
Data=Data{:,:};
t=Data(:,1);
X1=Data(:,2);
X2=Data(:,3);
X3=Data(:,4);
Y=Data(:,5);
Fs=8192;

%% All Auto Correlations
[S11_0,f]=cpsd(X1,X1,hamming(100),[],[],Fs);
[S12_0,f]=cpsd(X1,X2,hamming(100),[],[],Fs);
[S13_0,f]=cpsd(X1,X3,hamming(100),[],[],Fs);
[S1Y_0,f]=cpsd(X1,Y,hamming(100),[],[],Fs);

[S21_0,f]=cpsd(X2,X1,hamming(100),[],[],Fs);
[S22_0,f]=cpsd(X2,X2,hamming(100),[],[],Fs);
[S23_0,f]=cpsd(X2,X3,hamming(100),[],[],Fs);
[S2Y_0,f]=cpsd(X2,Y,hamming(100),[],[],Fs);

[S31_0,f]=cpsd(X3,X1,hamming(100),[],[],Fs);
[S32_0,f]=cpsd(X3,X2,hamming(100),[],[],Fs);
[S33_0,f]=cpsd(X3,X3,hamming(100),[],[],Fs);
[S3Y_0,f]=cpsd(X3,Y,hamming(100),[],[],Fs);

[SYY_0,f]=cpsd(Y,Y,hamming(100),[],[],Fs);


%% Removing Effect of 2nd Input

L12=S12_0./S11_0;
S22_1=S22_0 - (L12).*(S21_0);

L1Y=S1Y_0./S11_0;
SYY_1=SYY_0 - (L1Y).*(S1Y_0); 

S2Y_1= S2Y_0 - (L1Y).*(S21_0);


%% Removing Effect of 3rd Input
L13=S13_0./S11_0; 
S32_1=S32_0 - (L12).*(S31_0);
S23_1=S23_0 - (L13).*(S21_0);
L23=S23_1./S22_1;
S33_1=S33_0 - (L13).*(S31_0);
S33_2=S33_1 - (L23).*(S32_1);

S2Y_1=S2Y_0 - (L1Y).*(S21_0);
SY2_1 = S2Y_0 - (L12).*(S1Y_0);
L2Y=S2Y_1./S22_1;
SYY_2=SYY_1 - (L2Y).*(SY2_1);

S3Y_1=S3Y_0 - (L1Y).*(S31_0);
S32_1=S32_0 -(L12).*(S31_0);
S3Y_2=S3Y_1 - (L2Y).*(S32_1);


%% Final Partial Coherence between 1st Input and Output
b=(S33_2).*(SYY_2);
a=(abs(S3Y_2)).^2;
ans=a./b;


subplot(2,1,2)
plot(f,ans);

0 ответов

Другие вопросы по тегам