把程序整理了一下,因为是针对本人的模型,但是也就是差在我们的路径不一样而已。所以只能给大家做一个参考吧。
可能还有不对的地方。反正大致的思路就是:建立数组—提取数据放到数组——MFOURI命令——生成曲线出图(也可以不出图,结果都在数组中呢,要进行循环计算的话,直接用就行了!)
最好还是把结果和在MATLAB中谐波分析的结果做个对比,看看针对您自己的模型是否正确。
/REPLOT,RESIZE
FINISH
/POST1
PARESU, ,'ZYL123',' ','D:\ZYL_BAIHETAN\model\' 这里是提取我之前保存的路径。应该还能改善。
PATH,STAT
!*
!*
PDEF, ,B,X,AVG
/PBC,PATH, ,0
!*
----------------谐波分析程序---------------------
*dim,Agap,array,2641 !!!! 2641=路径上点的个数×相邻点之间的等分数
*dim,Bgap,array,2641
*dim,theta,table,2641
*dim,coeffA,array,15
*dim,coeffB,array,15
*dim,mode,,15
*dim,isym,,15
*dim,B,,15
*dim,curve,table,2641,15
mode(1)=0
*do,i,3,15,2
mode(i)=i-2
*enddo
*do,i,2,14,2
mode(i)=i-1
*enddo
isym(1)=1
*do,i,2,15
isym(i)=(-1)**(i-1)
*enddo
pdef,Bpath,B,x !!! 映射B到路径上
pdef,Apath,A,Z
*do,jj,1,2641 !!! 把数据写到数组中
*get,Bgap(jj),path,0,item,Bpath,pathpt,jj
*get,Agap(jj),path,0,item,Apath,pathpt,jj
theta(jj)=360*jj/2641 !!! 化为电角度(这一步也不知道对不对,反正最后图中的横坐标指的是一对极下)
*enddo
isym(1)=1
*do,i,2,15
isym(i)=(-1)**(i-1)
*enddo
*MFOURI,FIT,coeffB,mode,isym,theta,Bgap !!!!! MFOURI命令。
*MFOURI,FIT,coeffA,mode,isym,theta,Agap
*do,i1,1,13,2
B(i1)=sqrt(coeffb(i1+1)**2+coeffb(i1+2)**2)
*enddo
*do,j1,1,2641
*do,i1,1,15,2
curve(j1,i1)=B(i1)*sin(2*pi*j1/2641*i1)
*if,i1,eq,15,then
curve(j1,i1)=Bgap(j1)
*endif
*enddo
*enddo
*vplot,theta,curve(1,1),3,5,7,9,11,13,15 |