【精品】maxwell电机气隙磁密与用matlab进行fft谐波分析.doc
maxwell 电机气隙磁密与用matlab进行fft谐波分析1对电机进行静态场分析,分析完后,进入后处理下载 (37.19 KB)2010-8-4 09:222需要在气隙中间画一条圆弧线。点开deometry菜单,点creat再选Arc如下图所示。下载 (24.48 KB)2010-8-4 09:22然后输入圆弧的中心(0,0)回车。在下一个界面输入起始点坐标。最后一个界面输入这条弧线上的采样点数(250),圆弧角90度,圆弧的分段数目(250),名字以及线的颜色,最后回车,就会得到下图的圆弧了。下载 (13 KB)2010-8-4 09:22 下载 (18.6 KB)2010-8-4 09:22 下载 (18.29 KB)2010-8-4 09:22下载 (6.56 KB)2010-8-4 09:223. 需要得到气隙磁密。打开后处理计算器,依次选择qtyB,即选择磁密矢量。选择geomlineairgap_line, 即选中刚才画的那条弧线。选择unit vect2d normal,求取圆弧线的径向分量。选择dot(点乘),求取圆弧线上的B的径向分量。再选一遍那个圆弧线,然后点 2d plot,就会出现那个磁密分布图了。下载 (30.96 KB)2010-8-4 09:22下载 (31.94 KB)2010-8-4 09:22下载 (25.33 KB)2010-8-4 09:22下载 (29.77 KB)2010-8-4 09:22下载 (30.82 KB)2010-8-4 09:22下载 (35.08 KB)2010-8-4 09:22下载 (17.12 KB)2010-8-4 09:224. 虽然maxwell本身也可以做fft分析,但小弟还是喜欢把数据导出来在matlab 中进行分析,这样更灵活一些。导出数据。点击plot菜单save as2d plot。在弹出的对话框中输入数据文件的名字。(小弟实在找不到更好的办法导出数据了,如有哪位达人有更好的方法,请赐教。小弟在此谢谢了。)下载 (11.8 KB)2010-8-4 09:22下载 (11.38 KB)2010-8-4 09:225. 对气隙磁密进行谐波分析。将第四步中生成的.dat文件拷出来放到一个文件夹中(保证matlab和数据文件的路径相同)。然后将matlab文件也拷贝到这个文件夹中。打开这个m文件,输入Ns=500(需要进行分析的采样点个数,由于我们在maxwell中只分析了一个磁极下的磁密,所以只有半个周期,我们需要通过镜像生成后半个周期,这样总采样点个数为250*2=500)。Order是需要分析的谐波次数,输入11就是分析到11次谐波。运行,就得到下面的两个图了,第一个是原始波形,基波分量以及各高次谐波;第二个是个谐波分量的幅值大小柱状图。2010-8-4 09:22下载 (18.78 KB)2010-8-4 09:22这样一个电机气隙磁密谐波分析就完成了。clcclear all;format long; Ns=500;order=11; %*read the position and flux density*fid=fopen('B.dat','r'); %open the original filefidnew = fopen('b1.dat','w'); %write the new filewhile feof(fid)=0 tline = fgetl(fid); %tline? if ischar(tline), break, end temp=abs(tline); Nlength=length(tline); isemptyline=0; %? if Nlength=0 isemptyline=1; end allspace=0; %? isspace=0; for i=1:Nlength T=temp(i); if T=32 isspace=isspace+1; end if isspace=Nlength allspace=1; break end end findalpha=0; %? for j=1:Nlength T=temp(j); if (T>=65)&(T>=90)|(T>=97)&(T>=122) findalpha=1; break; end end if (findalpha)&(allspace)&(isemptyline=0) %? fprintf(fidnew,tline);fprintf(fidnew,'n'); end end fclose(fid);fclose(fidnew); fid1=fopen('b1.dat','r');flux_position =fscanf(fid1,'%f',2,Ns);fclose(fid1);%*read file finish*flux_position=flux_position'pos=flux_position(:,1); flux=flux_position(:,2); figure;plot(pos,flux,'r');%plot origional waveformhold on;grid on;fft1=fft(flux,Ns);j=0;amp_har=zeros(1,(order+1)/2); for m=1:2:order j=j+1; fft1=fft(flux,Ns); fund_ele_front=fft1(m+1); 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); hold on;end k=(1:2:order);figure;bar(k,amp_har);grid on;%peak_b=max(fft1)%rms_b=0.707*peak_b