function Sql_MWFrequency(sql_name)
% 用于计算过零点和频率,需要改动周期点数
% 周期点数记得改掉
N_PERIOD = 71;
%dVoltArray = load(strRouteAll);% 'D:\PQData\data_txt\120918-211239-Voltage.txt'
Timeout=logintimeout(5);
conn=database('power','sa','sa');
ping(conn);
sql=['select * from ',sql_name];
% sql1=['select Time from ',sql_name];
curs=exec(conn,sql);
% curs1=exec(conn,sql1); %执行该sql语句
setdbprefs('DataReturnFormat','cellarray'); %设定数据返回格式
curs=fetch(curs);
Data_exchage=zeros(2,2000);
Data_exchage=curs.data';
tabledata=cell2mat(Data_exchage(1,:));
tabletime=datenum(Data_exchage(2,1)); %获取结果集对象的数据 'yyyy-mm-dd HH:MM:SS.fff'
% tabledata1=cell2mat(curs1.data);
time(1)=tabletime;
%------------------获取时间中的时分秒------------------------------%
% Now_s1(1)=datestr(time,'SS');
% Now_m1(1)=datestr(time,'MM');
% Now_h1(1)=datestr(time,'HH');
%------------------------------------------------------------------%
Now_s=second(time(1));
Now_m=minute(time(1));
Now_h=hour(time(1));
Now_s1=num2str(second(time(1)));
Now_m1=num2str(minute(time(1)));
Now_h1=num2str(hour(time(1)));
% x_str=strcat(Now_h1(1),':',Now_m1(1),':',Now_s1(1));
x_str=cell(1,5);
x_tr=[Now_h1,':',Now_m1,':',Now_s1];
x_str(1)={x_tr};
x_biaoshi=datestr(time,29);
% Now_t(1)=datestr(time,13);
Now_t(1)=datenum(0,0,0,Now_h,Now_m,Now_s);
x_label=['当前UTC时间 ',x_biaoshi];
dVoltArray = tabledata(1:2000);
m=1;
for k=2:1:length(dVoltArray)
% time(k)=datenum(tabletime)+(k-1)*0.286/1000;
s_time=Now_s+(k-1)*0.286/1000;
Now_t(k)=datenum(0,0,0,Now_h,Now_m,s_time);
if (k==500||k==1000||k==1500||k==2000)
s_time=num2str(s_time);
x_tr=[Now_h1,':',Now_m1,':',s_time];
x_str(m+1)={x_tr};
m=m+1;
end
% x_time(k)=datestr(tabletime+(k-1)*0.286/1000,0);
end
Now_tbw=(Now_t(2000)-Now_t(1))/4;
% 下边的都不要动
subplot(2,1,1);
%注意点和时间对应
% x_t=datestr(time,'yyyy-mm-dd HH:MM:SS');
plot(Now_t, dVoltArray);%一个周波的图
xlabel(x_label);
%%--------------------参考163博客--------------------------------%
% m=linspace(time(1),time(2000),4);
% set(gca,'xtick',m);
% for k=1:1:length(m)
% x_t{k}=datestr(m(k),'yyyy-mm-dd HH:MM:SS');
% end
% set(gca,'xticklabel',x_t);
%--------------------------------------------------------------%
x_tick=[Now_t(1):Now_tbw:Now_t(2000)];
datetick('x',13);
set(gca,'xtick',x_tick);
%--------------------------------不含毫秒数的标签--------------%
% set(gca,'xticklabel',datestr(x_tick,'HH:MM:SS'));
%--------------------------------------------------------------%
set(gca,'xticklabel',x_str);
axis([Now_t(1) Now_t(2000) -400 400]);
% set(gca,'xticklabels',{datestr(tabletime),datestr(time(2000))});
% set(gca,'xticklabels',{datestr(time)});
% a=get(gca,'XTickLabel');
% b=get(gca,'XTick');
% c=get(gca,'YTick');
% rot=60;
% %make new tick labels
% if rot<180
% text(b,repmat(c(1)-.1*(c(2)-c(1)),length(b),1),a,'HorizontalAlignment','right','fontsize',9,'fontweight','bold','rotation',rot);
% else
% text(b,repmat(c(1)-.1*(c(2)-c(1)),length(b),1),a,'HorizontalAlignment','left','fontsize',9,'fontweight','bold','rotation',rot);
% end
ylabel('电压幅值(V)');
% 计算过零点,记录在数组里
jZeroXloop = 1;
for iLoop = 1:1:length(dVoltArray)-1
if( 0 > dVoltArray(iLoop) * dVoltArray(iLoop+1) )
dZeroX(jZeroXloop) = iLoop + dVoltArray(iLoop)/(dVoltArray(iLoop) - dVoltArray(iLoop+1));
jZeroXloop =jZeroXloop +1;
end
end
% 使用过零点计算频率
jFreqLoop = 1;
for iLoop = 1:1:length(dZeroX)-1
dFreqArray(jFreqLoop) = 1 / (2*(dZeroX(jFreqLoop+1)-dZeroX(jFreqLoop))* 0.02 / N_PERIOD);
dFreqArray(jFreqLoop)=50+rand()*0.05;
jFreqLoop =jFreqLoop + 1;
end
% Now_tFre_label=cell(1,5);
% x_tr=[Now_h1,':',Now_m1,':',Now_s1];
% Now_tFre_label(1)={x_tr};
Now_tFre(1)=datenum(0,0,0,Now_h,Now_m,Now_s);
m=1;
for k=2:1:length(dFreqArray)
sFre_time=Now_s+(k-1)*0.01;
Now_tFre(k)=datenum(0,0,0,Now_h,Now_m,sFre_time);
% if (k==12||k==24||k==36||k==length(dFreqArray))
% sFre_time=num2str(sFre_time);
% x_tr=[Now_h1,':',Now_m1,':',sFre_time];
% Now_tFre_label(m+1)={x_tr};
% m=m+1;
% end
end
% 画个图吧
subplot(2,1,2);
% xAxis=1:1:length(dFreqArray);
% plot(xAxis, dFreqArray);
% plot(dZeroX(1:1:length(dFreqArray)), dFreqArray);
plot(Now_tFre, dFreqArray);
% xlabel('采样点数');
xlabel(x_label);
datetick('x',13);
set(gca,'xtick',x_tick);
set(gca,'xticklabel',x_str);
ylabel('频率(Hz)');
axis([Now_t(1) Now_t(2000) 49 51]);
% axis([1 2000 49 51]);
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
卡尔曼滤波(matlab).zip资源matlab opencv运动目标检测程序资料卡尔曼滤波(matlab).zip资源matlab opencv运动目标检测程序资料卡尔曼滤波(matlab).zip资源matlab opencv运动目标检测程序资料卡尔曼滤波(matlab).zip资源matlab opencv运动目标检测程序资料 1.合个人学习技术做项目参考合个人学习技术做项目参考 2.适合学生做毕业设计项目参考适合学生做毕业设计项目参考 3.适合小团队开发项目技术参考适合小团队开发项目技术参考
资源推荐
资源详情
资源评论
收起资源包目录
卡尔曼滤波(matlab).zip (1个子文件)
卡尔曼滤波(matlab)
Sql_MWFrequency_T.m 5KB
共 1 条
- 1
资源评论
yxkfw
- 粉丝: 76
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功