%bbb1、bbb2、bbb3分别为需要测试的不同频率信号,aaa为标准比较信号 一般设为10KHZ的方波
bbb.signals.values=[bbb1.signals.values;bbb2.signals.values;bbb3.signals.values];
original_data=bbb.signals.values';%测试数据1
stand_data=aaa.signals.values';%测试数据2
frequency_stand=10000;
pulse_number_stand=0;
pulse_number_test=0;
pulse_sum=0;
element_number_test=20000;
element_number_stand=1000;
data_size_test=length(original_data)/element_number_test;
data_size_stand=length(stand_data)/element_number_stand;
pulse_group_st=zeros(1,fix(data_size_stand));
pulse_group_test=zeros(1,fix(data_size_test));
frequency_test=zeros(1,fix(data_size_test));
%标准采样循环体
for group_number_stand=1:1:data_size_stand; %总元素以组循环
adjustment_stand=group_number_stand-1;
for element_counter_st=(length(stand_data)/data_size_stand)*adjustment_stand+1:(length(stand_data)/data_size_stand)*group_number_stand %每组中以元素循环
element_later_st=element_counter_st+1;
if(element_later_st>length(stand_data)) element_later_st=length(stand_data); end %上限判断处理
if(stand_data(element_later_st)>stand_data(element_counter_st)) %存在上升沿
pulse_number_stand=pulse_number_stand+1; %检测到一个脉冲,计数
else
end
end
pulse_group_st(group_number_stand)=pulse_number_stand; %以组的形式将脉冲数保存
pulse_number_stand=0;
end
%取标准数据的平均频率 (所有点均算)
% for pulse_count_st=1:fix(data_size_stand) %取整函数
% pulse_sum=pulse_sum+pulse_group_st(pulse_count_st);
% end
% pulse_average=pulse_sum/fix(data_size_stand);
%取标准数据的平均频率 (只算5组)
for pulse_count_st=1:5 %取整函数
pulse_sum=pulse_sum+pulse_group_st(pulse_count_st);
end
pulse_average=pulse_sum/5;
%测试数据采样循环体
for group_number=1:1:data_size_test;
adjustment=group_number-1;
for element_counter=(length(original_data)/data_size_test)*adjustment+1:(length(original_data)/data_size_test)*group_number
element_later=element_counter+1;
if(element_later>length(original_data)) element_later=length(original_data);end
if(original_data(element_later)>original_data(element_counter))
pulse_number_test=pulse_number_test+1;
else
end
end
pulse_group_test(group_number)=pulse_number_test;
pulse_number_test=0;
end
%分点频率比较,得最终频率
for pulse_count_test=1:1:fix(data_size_test)
frequency_test(pulse_count_test)=(pulse_group_test(pulse_count_test)/(element_number_test/element_number_stand)/pulse_average)*frequency_stand;
end
%画图函数 以组为横坐标,频率为纵坐标
x=1:1:data_size_test;
plot(x,frequency_test);
评论0