想计算信号的偏相干系数,这个程序不会用了,求大神指点一下运行就出错误 matlab

H ào 2020-09-09 04:49:42

%%求四输入单输出的偏相干函数
%输入信号
s1=load('C:\Users\haoge\Desktop\pian\intake.txt');
s2=load('C:\Users\haoge\Desktop\pian\exhaust.txt');
s3=load('C:\Users\haoge\Desktop\pian\tank.txt');
s4=load('C:\Users\haoge\Desktop\pian\roof.txt');
out=load('C:\Users\haoge\Desktop\pian\ear.txt');
%
fs =10240; % fs 采样频率
t=1/fs; % t 时间向量
l=length(s1); % 信号长度
NFFT=2^nextpow2(l); % NFFT 点 FFT 计算
%
f=fs/2*linspace(0,1,(NFFT/2+1)); %实际频率转化
%
g1=fft(s1,NFFT,l);
g2=fft(s2,NFFT,l);
g3=fft(s3,NFFT,l);
g4=fft(s4,NFFT,l);
gout=fft(out,NFFT,l);
%%
%求第一通道的偏相干函数
%%消除第二通道的影响
g12=g1-((cpsd(s1,s2,hanning(5120),2560,NFFT,fs)')./(cpsd(s2,s2,hanning(5120),2560,NFFT,fs)')).*g2;
g32=g3-((cpsd(s3,s2,hanning(5120),2560,NFFT,fs)')./(cpsd(s2,s2,hanning(5120),2560,NFFT,fs)')).*g2;
g42=g4-((cpsd(s4,s1,hanning(5120),2560,NFFT,fs)')./(cpsd(s2,s2,hanning(5120),2560,NFFT,fs)')).*g2;
%%重构信号
s12=IFFT_user(g12,NFFT,l);
s32=IFFT_user(g32,NFFT,l);
s42=IFFT_user(g42,NFFT,l);
%%消除第三通道的影响
g123=g12-((cpsd(s12,s32,hanning(5120),2560,NFFT,fs)')./(cpsd(s32,s32,hanning(5120),2560,NFFT,fs)')).*g32;
g423=g42-((cpsd(s42,s32,hanning(5120),2560,NFFT,fs)')./(cpsd(s32,s32,hanning(5120),2560,NFFT,fs)')).*g32;
%%重构信号
s123=IFFT_user(g123,NFFT,l);
s423=IFFT_user(g423,NFFT,l);
%%消除第四通道的影响
g1234=g123-((cpsd(s123,s423,hanning(5120),2560,NFFT,fs)')./(cpsd(s423,s423,hanning(5120),2560,NFFT,fs)')).*g423;
%重构信号
s1234=IFFT_user(g1234,NFFT,l);
%temp=abs(CPSD_user(g1234,gout));
partial_coherence1=mscohere(s1234,out,hanning(5120),2560,NFFT,fs);
%%
%求第二通道的偏相干函数
%%消除第一通道的影响
g21=g2-((cpsd(s2,s1,hanning(5120),2560,NFFT,fs)')./(cpsd(s1,s1,hanning(5120),2560,NFFT,fs)')).*g1;
g31=g3-((cpsd(s3,s1,hanning(5120),2560,NFFT,fs)')./(cpsd(s1,s1,hanning(5120),2560,NFFT,fs)')).*g1;
g41=g4-((cpsd(s4,s1,hanning(5120),2560,NFFT,fs)')./(cpsd(s1,s1,hanning(5120),2560,NFFT,fs)')).*g1;
%%重构信号
s21=IFFT_user(g21,NFFT,l);
s31=IFFT_user(g31,NFFT,l);
s41=IFFT_user(g41,NFFT,l);
%%消除第三通道的影响
g213=g21-((cpsd(s21,s31,hanning(5120),2560,NFFT,fs)')./(cpsd(s31,s31,hanning(5120),2560,NFFT,fs)')).*g31;
g413=g41-((cpsd(s41,s31,hanning(5120),2560,NFFT,fs)')./(cpsd(s31,s31,hanning(5120),2560,NFFT,fs)')).*g31;
%%重构信号
s213=IFFT_user(g213,NFFT,l);
s413=IFFT_user(g413,NFFT,l);
%%消除第四通道的影响
g2134=g213-((cpsd(s213,s413,hanning(5120),2560,NFFT,fs)')./(cpsd(s413,s413,hanning(5120),2560,NFFT,fs)')).*g413;
%重构信号
s2134=IFFT_user(g2134,NFFT,l);
%temp=abs(CPSD_user(g1234,gout));
partial_coherence2=mscohere(s2134,out,hanning(5120),2560,NFFT,fs);
%%
%求第三通道的偏相干函数
%%消除第一通道的影响

g21=g2-((cpsd(s2,s1,hanning(5120),2560,NFFT,fs)')./(cpsd(s1,s1,hanning(5120),2560,NFFT,fs)')).*g1;
g31=g3-((cpsd(s3,s1,hanning(5120),2560,NFFT,fs)')./(cpsd(s1,s1,hanning(5120),2560,NFFT,fs)')).*g1;
g41=g4-((cpsd(s4,s1,hanning(5120),2560,NFFT,fs)')./(cpsd(s1,s1,hanning(5120),2560,NFFT,fs)')).*g1;
%%重构信号
s21=IFFT_user(g21,NFFT,l);
s31=IFFT_user(g31,NFFT,l);
s41=IFFT_user(g41,NFFT,l);
%%消除第二通道的影响
g312=g31-((cpsd(s31,s21,hanning(5120),2560,NFFT,fs)')./(cpsd(s21,s21,hanning(5120),2560,NFFT,fs)')).*g21;
g412=g41-((cpsd(s41,s21,hanning(5120),2560,NFFT,fs)')./(cpsd(s21,s21,hanning(5120),2560,NFFT,fs)')).*g21;
%%重构信号
s312=IFFT_user(g312,NFFT,l);
s412=IFFT_user(g412,NFFT,l);
%%消除第四通道的影响
g3124=g312-((cpsd(s312,s412,hanning(5120),2560,NFFT,fs)')./(cpsd(s412,s412,hanning(5120),2560,NFFT,fs)')).*g412;
%重构信号
s3124=IFFT_user(g3124,NFFT,l);
%temp=abs(CPSD_user(g1234,gout));
partial_coherence3=mscohere(s3124,out,hanning(5120),2560,NFFT,fs);
%%
%求第四通道的偏相干函数
%%消除第一通道的影响
g21=g2-((cpsd(s2,s1,hanning(5120),2560,NFFT,fs)')./(cpsd(s1,s1,hanning(5120),2560,NFFT,fs)')).*g1;
g31=g3-((cpsd(s3,s1,hanning(5120),2560,NFFT,fs)')./(cpsd(s1,s1,hanning(5120),2560,NFFT,fs)')).*g1;
g41=g4-((cpsd(s4,s1,hanning(5120),2560,NFFT,fs)')./(cpsd(s1,s1,hanning(5120),2560,NFFT,fs)')).*g1;
%%重构信号
s21=IFFT_user(g21,NFFT,l);
s31=IFFT_user(g31,NFFT,l);
s41=IFFT_user(g41,NFFT,l);
%%消除第二通道的影响
g312=g31-((cpsd(s31,s21,hanning(5120),2560,NFFT,fs)')./(cpsd(s21,s21,hanning(5120),2560,NFFT,fs)')).*g21;
g412=g41-((cpsd(s41,s21,hanning(5120),2560,NFFT,fs)')./(cpsd(s21,s21,hanning(5120),2560,NFFT,fs)')).*g21;
%%重构信号
s312=IFFT_user(g312,NFFT,l);
s412=IFFT_user(g412,NFFT,l);
%%消除第三通道的影响
g4123=g412-((cpsd(s412,s312,hanning(5120),2560,NFFT,fs)')./(cpsd(s312,s312,hanning(5120),2560,NFFT,fs)')).*g312;
%重构信号
s4123=IFFT_user(g4123,NFFT,l);
%temp=abs(CPSD_user(g1234,gout));
partial_coherence4=mscohere(s1234,out,hanning(5120),2560,NFFT,fs);
%%
%%
...全文
456 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_34826594 2021-03-04
  • 打赏
  • 举报
回复
你这个程序是错的吧,你那G1,G2这些都是傅里叶变换的频谱,应该是自功率谱吧
H ào 2020-11-29
  • 打赏
  • 举报
回复
没搞出来,能分享你的给我吗
杨的李李李 2020-11-27
  • 打赏
  • 举报
回复
不知道你搞出来没。我用for循环写了通用的计算程序。导入测试信号即可求得偏相干函数。
weixin_44815252 2022-04-01
  • 举报
回复
@杨的李李李 您好,最近在研究偏相干,可以借鉴下您的程序吗

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧