clc
clear all
data = xlsread('data'); %Excel表格data数据即为测量的表磁数据
[M1,N1] = size(data); %行即为采集的数据点,列即为层数
%设置采样率为数据点数
fs = M1;
pole = 12; %电机为12对极
for i1 = 1:N1
data_1 = data(:,i1);
data_1_fft = fft(data_1);
%fft之后求绝对值及平均能量
data_1_fft_1 = abs(data_1_fft/M1);
%fft后数据是对称的,取前半段数据
data_1_fft_2 = data_1_fft_1(1:floor(M1/2)+1);
%计算长度
L = length(data_1_fft_2);
%后半段能量加到前半段
data_1_fft_2(2:L-1) = 2*data_1_fft_2(2:L-1);
data_1_fft_end(:,i1) = data_1_fft_2;
end
%计算fft后横坐标
freq = fs*(0:floor(M1/2))/M1;
freq = freq';
%提取1、3、5、7、9、11、13、15、17、19次谐波幅值,可以根据需求提取任意次谐波幅值
i4 = 1;
for i2 = 1:N1
i5 = 1;
for i3 = 1:2:19
freq_1 = pole;
freq_1 = freq_1*i3;
%提取各次谐波幅值
amplitude(i5,i4) = data_1_fft_end(freq_1+1,i2);
i5 = i5+1;
end
i4 = i4+1;
end
disp(amplitude); %显示提取的谐波幅值
for j = 1:N1
plot(freq,data_1_fft_end(:,j));
hold on
end
title('Magnitude of FFT')
xlabel('Frequency (Hz)')
ylabel('Amplitude(mT)')
上述即为永磁电机转子表磁数据谐波提取代码,还可以写成软件,方便没有MATLAB基础的小伙伴计算;下一次将给大家展示如何使用MATLAB将上述代码写成小软件,小伙伴们持续跟踪吧!
谢谢小伙伴的关注,后续将陆续为大家讲解数字信号处理原理及代码实现等内容....