clc
clear all;
Ns=91;
order=31; %需要提取的最大次数,提取的谐波次数为1、3、5、....
flux_position = xlsread('data');
pos=flux_position(:,1);
flux=flux_position(:,2); %需要计算的电流数据
figure;
plot(pos,flux,'k'); %绘制原始电流
hold on;
grid on;
amp_har=zeros(1,(order+1)/2); %基波和谐波的显示数量
j=1;
for m=1:2:order
fft1=fft(flux,Ns);
fund_ele_front=fft1(m+1); %m次波幅值
fund_ele_back=fft1(Ns+1-m);
amp_har(j)=(abs(fund_ele_front))/Ns*2; %纵坐标值
fft1=0*fft1; %保存数据
fft1(m+1)=fund_ele_front;
fft1(Ns+1-m)=fund_ele_back;
fft1=ifft(fft1,Ns); %恢复原始电流信号
fft1=real(fft1);
plot(pos,fft1);
j=j+1;
hold on;
end
k=(1:2:order);
figure;
bar(k,amp_har); %画出柱状图
grid on;
Value= reshape(amp_har,[],1);
上述即为永磁电机电流数据谐波计算代码,还可以写成软件,方便没有MATLAB基础的小伙伴计算;下一次写好软件给大家奉上,小伙伴们持续跟踪吧!
谢谢小伙伴的关注,后续将陆续为大家奉上数字数据处理原理及代码实现等内容....