根据示波器存储的波形数据得到两列信号的相位差(MATLAB源码)

目的

示波器显示的波形如下,需要通过MATLAB处理得到这两列信号的相位差。
在这里插入图片描述

步骤

将U盘插入到示波器上,存储信号序列。在MATLAB中读取这个.CSV 信号序列文件,处理得到相位差。代码如下:

clear all
close all
%读取数据
t=xlsread('A2.CSV','A2','A1:A500');%读取时间序列
x=xlsread('A2.CSV','A2','B1:B500');%读取参考信号
x1=xlsread('A2.CSV','A2','C1:C500');%读取待测信号
subplot 211;
plot(t,x,'b-');hold on;
plot(t,x1,'r--');grid;
legend('Reference','Signal');title('Origin');

%数据归一化
m1=(max(x)+min(x))/2;
m2=(max(x1)+min(x1))/2;
x=(x-m1)/max(x);   
x1=(x1-m2)/max(x1);
subplot 212;
index=find(x==0);
plot(t,x,'b-');hold on;
plot(t,x1,'k--');grid;
hold on;
legend('Reference','Signal');title('Normalization');

num=500;  %数据数量
l=0:1:num;
x=x;
y=x1;
Ix=sum(x.^2)/num;
Iy=sum(y.^2)/num;
Ixy=sum(x.*y)/num;
c=180*acos(Ixy/(Ix*Iy)^0.5)/pi;  %计算相位差
%disp(['相位差为',num2str(c), '度']);
output = sprintf('相位差为%f度', c);
output

结果

在这里插入图片描述

发布了14 篇原创文章 · 获赞 6 · 访问量 2185

猜你喜欢

转载自blog.csdn.net/liuz_notes/article/details/103801378
今日推荐