各位好,我写了一个脉冲计数的程序,程序中data3是置零脉冲的电压数据。在我写的for循环中,我想实现当data3电压大于我的预设值threshold时,计数值count置零,也就是期望X的第四列应该是会有置零的,但是我运行程序得到的计数值并没有置零,想咨询一下这是为什么呢?我设置断点也没有看出来问题在哪里。。dataa和dataz两个数据文件附在百度网盘里了[]([](链接:https://pan.baidu.com/s/13Jqu7AtjSYQAC7UVJLS98g?pwd=sjz0
提取码:sjz0
--来自百度网盘超级会员V1的分享))
clear all
load('dataa.mat')
load('dataz.mat')
A = data5; %A需要为112280n的矩阵
A = A(:);
Z = data3;
Z = Z(:);
f = 20000; %定义数据结果频率0.001s((f/20M)s)算一次
q = floor(length(A(:))/f); %循环数
X = zeros(qf,4);
for r=1:(q*f)
time_stamp = (f/20000000);
threshold=2000; %阈值
if A(1 + (r-1) * f)<threshold
flaga=0;
else
flaga=1;
end
olda=A(1 + (r-1) * f);
newa=A(2 + (r-1) * f);
oldz=Z(1 + (r-1) * f);
newz=Z(2 + (r-1) * f);
counta=0;
if (newz>threshold)&&(oldz<=threshold)
counta=0;
oldz=newz;
else
if(newa>threshold)&&(olda<=threshold)&&(flaga==0)
flaga=1;
counta=counta+1;
end
if(newa<threshold)&&(olda>=threshold)&&(flaga==1)
flaga=0;
end
olda=newa;
oldz=newz;
end
X(r,1) = time_stamp;
X(r,2) = counta;
X(r,3) = counta*(6000/1024);
X(r,4) = sum(X(:,2))*(360/1024)
end