ninabaobao05 发表于 2020-4-15 22:58

电磁力密度matlab fft2分解

想要求教matlab的二维fft分解。一直以来大家都说matlab有这个功能,但是我分解出来的数据都对不太上。我把maxwell中的电磁力变成了一个矩阵(第二张图)。在maxwell中因为空间上选择了一个电周期的1001个点,时间上选择一个周期计算了48个点,按照fft2的程序,我用fft2(Fr),之后取模abs(Fr),再将除了第一行和第一列的数据*2*2/1001/48,第一行第一列认为是直流分量,所以直接/1001/48,这样分解后的数据不对。我是48槽8极电机,按理说应该只有偶数次频率以及0、8、16(即阶次的偶数列)阶有电磁力,但是我得到的结果(第三张图)不满足这个理论分析。
http://magimg.simol.cn/pic/20200415/1586962723078498_229.jpg
http://magimg.simol.cn/pic/20200415/1586962723236757_156.jpg
http://magimg.simol.cn/pic/20200415/1586962723402147_458.jpg
http://magimg.simol.cn/pic/20200415/1586962723647861_400.jpg

蜗牛也很牛 发表于 2020-4-16 08:48

我也在做这一步,主要就是FFT2的用法

ghugyul 发表于 2020-4-16 09:39

和你遇到的问题类似,个人认为数据问题来源可能有2个,一个是maxwell输出数据的奇偶个数,一个是FFT2分解的奇偶数的问题。你这时间48个点空间1001个点肯定有问题,48个点分析频率也有点少吧。我的想法是可以先把FFT2分解的问题解决掉。我之前是用的都是偶数个,分解完幅值还是有误差,或许和最后一点是否需要和第一个点重合有关系,您可以试一下看看,能把理想的波形分解正确再考虑maxwell的结果的问题,供参考。
N1=1000;
N2=90;
f=linspace(0,2*pi,N1); %频率序列
v=linspace(0,2*pi,N2); %频率序列
for i=1:N1
    for j=1:N2
      xx(i,j)=cos(1*f(i)-1*v(j))+0.5*cos(1*f(i)+1*v(j))+0.2*cos(3*f(i)-5*v(j))+0.3*cos(10*f(i)-1*v(j))+0.3*cos(0*f(i)-1*v(j))+0.3*cos(0*f(i)-5*v(j))+0.2*cos(1*f(i)+0*v(j))+0.05;
    end
end

沃丶特 发表于 2020-4-16 13:26

目测你是用1/4模型得出的电磁力数据,如果是这样,你的空间阶次还要乘一个4

ninabaobao05 发表于 2020-4-16 15:45

沃丶特 发表于 2020-04-16 13:26
目测你是用1/4模型得出的电磁力数据,如果是这样,你的空间阶次还要乘一个4

是这样,如果是全电机模型,对于48槽8极电机数据出来应该看的就是第0、8、16、…、8n列,如果不乘4,我这个表数据看的就是第0、2、4、…、2n列,这里我为了方便把第一行和第一列认为是第0行第0列

沃丶特 发表于 2020-4-16 22:30

那你的数据没问题啊,第一个数据是10的5次方,奇数次的谐波数量级太小可以忽略了

ninabaobao05 发表于 2020-4-17 01:22

沃丶特 发表于 2020-04-16 22:30
那你的数据没问题啊,第一个数据是10的5次方,奇数次的谐波数量级太小可以忽略了

频率对不上啊,你看第三列的频率就不对,奇数次和偶数次大小都差不多

ninabaobao05 发表于 2020-4-17 01:25

沃丶特 发表于 2020-04-16 22:30
那你的数据没问题啊,第一个数据是10的5次方,奇数次的谐波数量级太小可以忽略了

而且第一行数据是0f的电磁力,在进行振动分析时可忽略的,一般从第二行开始,第二行是f,第三行是2f,第四行3f,理论来说奇数次频率对应的电磁力应该很小,远小于偶数次才对,但这里是有问题的

沃丶特 发表于 2020-4-17 08:19

ninabaobao05 发表于 2020-4-17 01:25
而且第一行数据是0f的电磁力,在进行振动分析时可忽略的,一般从第二行开始,第二行是f,第三行是2f,第 ...

nonono,你看错方向了,很明显列才是时间阶次,而行是空间阶次

ninabaobao05 发表于 2020-4-17 08:27

沃丶特 发表于 2020-04-17 08:19
nonono,你看错方向了,很明显列才是时间阶次,而行是空间阶次

我取的数据,行是按空间取的1001个点,列是按时间取的48个点,不能分解完了行列颠倒了啊。。。。

ninabaobao05 发表于 2020-4-17 08:28

沃丶特 发表于 2020-04-17 08:19
nonono,你看错方向了,很明显列才是时间阶次,而行是空间阶次

我也没说错啊,咱们说的是一个意思,我是说在同一列里面,第二行是f,第三行是2f,第四行是3f,以此类推

xkw123 发表于 2020-5-12 15:08

求fft2分解程序,刚弄出电磁力时空结果的小白

ninabaobao05 发表于 2020-5-12 20:49

xkw123 发表于 2020-05-12 15:08
求fft2分解程序,刚弄出电磁力时空结果的小白

我也没弄出来啊,我的数据处理结果不对

xkw123 发表于 2020-5-13 14:10

ninabaobao05 发表于 2020-5-12 20:49
我也没弄出来啊,我的数据处理结果不对

那楼主加油,我再找找看看

黄坚德 发表于 2020-5-17 13:47

楼主,程序可以分享下吗

ninabaobao05 发表于 2020-5-17 17:27

找我要代码的,一致回复下:公众号“模态空间”华科朱碧华童鞋发表的一篇文章中有详细解释,亲测有效

yuanyehit 发表于 2020-6-8 14:46

ghugyul 发表于 2020-4-16 09:39
和你遇到的问题类似,个人认为数据问题来源可能有2个,一个是maxwell输出数据的奇偶个数,一个是FFT2分解的 ...

请问您这个代码是什么意思呢?

jinlin4567 发表于 2020-8-26 14:45

亲,我想要代码谢谢

stepbystep 发表于 2020-9-15 22:47

是不是没有把零频分量移到中间

stepbystep 发表于 2020-9-15 22:50

我也是看那篇文章改的,里面有个问题请教一下。幅值还原对于直流分量,是第一行所有数据和第一列所有数据,还是第一行第一列那一个数据。文章里是B/=2,看题主的程序好像是第一种说法。
页: [1] 2 3 4 5 6
查看完整版本: 电磁力密度matlab fft2分解