%基波频率为50Hz
N=2048*4;%每周波采2048个点
fp=30;%拟显示的倍频次数,需小于N/2 用于使前面的参数显示清晰
wq=5;%稳定周期个数,为保证下行程序数组不出错,workspce的数据周期必须大于wq值
kh=0.01;%幅值比例系数,输出到文本时太小的谐波参数不输出
fid=fopen('output.txt','wt');%准备写入文件,文件在当前目录下
fprintf(fid,'每周波采样点数=%d\n',N);
y =ScopeData.signals.values ; %读取workspce数据,第一个点前面为示波器输出到workspce参数名
t=0:0.02/N:0.02/N*(size(y)-1);%每个周期为0.02秒,每周期采N个点,共size(y)-1个点
subplot(2,1,1);
plot(t,y);
xlabel('时间/s');
ylabel('幅值');
title('原始信号');
grid on;
subplot(2,1,2);
pn=wq*N;%取数据的基准点,主要目的是等系统稳定
plot(t(pn:pn+N-1),y(pn:pn+N-1));%数据周期必须小于wq,将出错
xlabel('时间/s');
ylabel('幅值');
title('抽取信号');
grid on;
figure(2);
subplot(2,1,1);
z=fft(y(pn:pn+N-1),N);
mag=abs(z)/N*2; %/N*2还原为真实的幅值
mag(1)=mag(1)/2;% 直流幅值要再除以2
f=0:N/2; %可分析N/2倍频率,N=128点时,可解析64倍频相关参数
bar(f(1:fp),mag(1:fp));%频谱 直方图bar
r(f(2:fp),mag(2:fp));%除去直流分量显示
r(f(3:fp),mag(3:fp));%除去基波分量显示
grid on;
xlabel('频率/倍');
ylabel('幅值');
title('FFT分析结果');
fprintf(fid,'直流分量=%8.4g\n',mag(1));
fprintf(fid,'基波峰值=%8.4g\n',mag(2));
在matlab运行此程序时提示 索引超出矩阵维度,求教一下各位此程序的问题出现在哪?或者是因为scope波形设置的问题?在此先行谢过了!
是在运行到plot(t(pn:pn+N-1),y(pn:pn+N-1))这一步开始出现问题的
加载中,请稍候......