⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phase_change.m

📁 变压器局部放电实验数据处理matlab程序
💻 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 + -