📄 phase_change.m
字号:
function z=phase_change(ch,picture)
%此函数用于示波器采集得到函数的相位对应
%同时返回峰值及对应的相位值
%两个输入参数:ch为n*2的波形矩阵,第一列为时间,第二列为电压值
% picture为 q-phai 画图开关,1为画图,0为不画图
%返回参数z为n1*2的矩阵,第一列为峰值对应相位,第二列为峰值
%2005.5.20第一次编辑
%2005.5.28改编
%2005.10.29改编
x1=ch(:,1);
x2=ylj_denoise(ch(:,2)',0);% 调用去躁程序不画图,x2 为去躁后的返回值,
x2=x2';
%close all% 关闭去躁过程中的图形
%以下提取去躁后信号的峰值
c=0;%c为一噪声阈值,若x2为去躁后的信号则设置为0
a=find(x2>c|x2<c);
if length(a)==0% 如果去噪后的信号为空,则赋值相位和峰值为0
phase=0;
peak=0;
else
k=1;
aa1(k)=1;
k=k+1;
for i=2:length(a)
if a(i)-a(i-1)>1;
aa1(k)=i;%a(aa1)记录波形的起始点
aa2(k-1)=i-1;%a(aa2)记录波形的终止点
k=k+1;
end
end
aa2(k-1)=length(a);%记录最后一个波形的终点
kk1=a(aa1);
kk2=a(aa2);
%到现在为止kk1代表所有波形的起始采样点
% kk2代表所有波形的终止采样点
for i=1:length(aa1)
wave=x2(kk1(i):kk2(i));
%peak(i)=max(wave);
%peak_value(i)=max(wave);
peak_value(i)=max(abs(wave));
%point_1=find(wave==peak_value(i));
point_1=find(abs(wave)==peak_value(i));
point(i)=kk1(i)+point_1-1;%point(i)记录此次波形的峰值点对应采样点
%plot(wave)
%figure(i)
clear wave
end
%peak=x2(point);
peak=abs(x2(point));% 2005.11.8日修改峰值均为绝对值
peak_samplepoint=x1(point);
%plot(peak_samplepoint,peak,'o')
%hold on
%plot(x1,x2)
%以上peak_samplepoint为放电峰值对应的采样点时间,peak为峰值
L=max(x1)-min(x1);
N=L/0.02;%采样周期数
y=zeros(length(x1),1);
phase=[];
for i=1:N+1
%c=find(x1>=min(x1)+0.02*i&x1<=min(x1)+0.02*i+0.02);
c=find(peak_samplepoint>=min(x1)+0.02*(i-1)&peak_samplepoint<=min(x1)+0.02*(i-1)+0.02);
%y(c,1)=360.*(x1(c,1)-i.*0.02)./0.02;
phase_1=360.*(peak_samplepoint(c)-(i-1).*0.02-min(x1))./0.02;
phase=[phase;phase_1];
end
end
if picture==1
figure(2)
plot(phase,peak,'+')
xLim([0,360])
end
if picture==0
end
z=[phase,peak];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -