一段电机转子表磁数据谐波幅值计算的MATLAB代码(需要自取)

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将上述代码写成小软件,小伙伴们持续跟踪吧!

谢谢小伙伴的关注,后续将陆续为大家讲解数字信号处理原理及代码实现等内容....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值