目的
示波器显示的波形如下,需要通过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