MATLAB中文论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 825|回复: 8|关注: 0

[已解决] MATLAB怎么对分段函数进行傅里叶变换进行编程

[复制链接]

新手

7 麦片

财富积分


050


5

主题

15

帖子

0

最佳答案
(使用的是64位2014b版的matlab软件,谢谢!)
分段函数如下:

                               
登录/注册后可看大图

论坛优秀回答者

高级

1536 麦片

财富积分


15002000


2

主题

3078

帖子

358

最佳答案
  • 关注者: 137
发表于 2017-9-26 22:07:26 | 显示全部楼层 |此回复为最佳答案
巧了,我空间刚好第一个就是

新手

7 麦片

财富积分


050


5

主题

15

帖子

0

最佳答案
 楼主| 发表于 2017-9-26 22:08:47 | 显示全部楼层
多谢,我先看看

新手

7 麦片

财富积分


050


5

主题

15

帖子

0

最佳答案
 楼主| 发表于 2017-9-26 22:15:23 | 显示全部楼层
halleyhit 发表于 2017-9-26 22:07
巧了,我空间刚好第一个就是

你好,看了你发的第一篇帖子
对于分段函数的傅里叶变换程序还是有点模糊啊,有没有类似的程序作为借鉴,谢谢

论坛优秀回答者

高级

1536 麦片

财富积分


15002000


2

主题

3078

帖子

358

最佳答案
  • 关注者: 137
发表于 2017-9-26 22:20:34 | 显示全部楼层
蜗牛漫步1993 发表于 2017-9-26 22:15
你好,看了你发的第一篇帖子
对于分段函数的傅里叶变换程序还是有点模糊啊,有没有类似的程序作为借鉴, ...

那个矩形信号不就是分段的嘛
拿两个阶跃一减不就是“一段”了吗,多个“一段”一加不就是分段函数吗

新手

7 麦片

财富积分


050


5

主题

15

帖子

0

最佳答案
 楼主| 发表于 2017-9-27 10:05:08 | 显示全部楼层
halleyhit 发表于 2017-9-26 22:20
那个矩形信号不就是分段的嘛
拿两个阶跃一减不就是“一段”了吗,多个“一段”一加不就是分段函数吗 ...

你好,用你的方法尝试运算了一下
【连续非周期傅里叶变换命令fourier,最基本的调用格式是fourier(信号,时域自变量,频域自变量),比较简单的例子是
syms t w
x=heaviside(t+1)-heaviside(t-1)
X=fourier(x,t,w)】
只是在最后的傅里叶变换后的结果中只得到了一个变量,这里有点疑惑,麻烦请前辈指教下,谢谢!
syms t n;
>> x=(2.115*t^2+3.211*t+0.241)*(heaviside(t+0.5)-heaviside(t-0))+(1.221*t^2-1.241*t-3.541)*(heaviside(t+1)-heaviside(t+0.5));
>> X=fourier(x,t,n)

X =

(423*pi*dirac(2, n))/200 - (pi*dirac(1, n)*3211*i)/1000 - (241*pi*dirac(n))/1000 - (1079*exp(n*i)*(pi*dirac(n) - i/n))/1000 - (exp(n*i)*(pi*dirac(1, n) + i/n^2)*3683*i)/1000 + (3559*exp((n*i)/2)*(pi*dirac(n) - i/n))/2000 + (exp((n*i)/2)*(pi*dirac(1, n) + i/n^2)*1779*i)/500 - (1221*exp(n*i)*(pi*dirac(2, n) - (2*i)/n^3))/1000 - (447*exp((n*i)/2)*(pi*dirac(2, n) - (2*i)/n^3))/500 + (241*i)/(1000*n) + 3211/(1000*n^2) - (423*i)/(100*n^3)

论坛优秀回答者

高级

1536 麦片

财富积分


15002000


2

主题

3078

帖子

358

最佳答案
  • 关注者: 137
发表于 2017-9-27 12:22:22 | 显示全部楼层
什么叫“只得到了一个变量”?我没听明白
我看了下代码,没什么问题,结果有什么不对吗?

新手

7 麦片

财富积分


050


5

主题

15

帖子

0

最佳答案
 楼主| 发表于 2017-9-27 13:23:21 | 显示全部楼层
halleyhit 发表于 2017-9-27 12:22
什么叫“只得到了一个变量”?我没听明白
我看了下代码,没什么问题,结果有什么不对吗? ...

多谢前辈指教,我刚刚其实是想保留t变量,让程序对n来进行求级数的运算,只是我把n t 的位置顺序放反了,调整后已经得到正解,多谢了!!!

新手

7 麦片

财富积分


050


5

主题

15

帖子

0

最佳答案
 楼主| 发表于 2017-9-27 20:22:45 | 显示全部楼层
蜗牛漫步1993 发表于 2017-9-27 13:23
多谢前辈指教,我刚刚其实是想保留t变量,让程序对n来进行求级数的运算,只是我把n t 的位置顺序放反了, ...

前辈你好,还有个关于计算中的问题想请教下:
%对u1(t)进行傅里叶变换
%下式为对u1(t)的表达式
j=(4.223*t^2+2.142*t+0.003)*(heaviside(t+0.1)-heaviside(t+0))+(3.594*t^2-2.692*t+0.503)*(heaviside(t+0.1)-heaviside(t+0.36))+0*(heaviside(t+0.36)-heaviside(t+1));
%求u1(t)的傅里叶变换形式
J=fourier(j,n,t)%J就是分段函数u1(t)的傅里叶转换形式
%对u1(t)求导
d1=diff(J)%对u1(t)的一介导数
d2=diff(J,2)%对u1(t)的二介导数
%求u’1(0)的值
d0=funcd1(0)(此函数文件程序见下,其中d就是 %对u1(t)的一介导数的结果)
d0 =

  -Inf【最后得到的结果为此值,因为之前已经用Excel表手算过,不可能为此值,所以想请前辈帮帮看看,谢谢!!!】

function [ d] =funcd1( t )
%UNTITLED5 此处显示有关此函数的摘要
%   此处显示详细说明
d=(2*pi*dirac(1, t)*((heaviside(t + 1/10) - heaviside(t))*((4223*t^2)/1000 + (1071*t)/500 + 3/1000) + (heaviside(t + 1/10) - heaviside(t + 9/25))*((1797*t^2)/500 - (673*t)/250 + 503/1000)) + 2*pi*dirac(t)*(((4223*t)/500 + 1071/500)*(heaviside(t + 1/10) - heaviside(t)) + (dirac(t + 1/10) - dirac(t))*((4223*t^2)/1000 + (1071*t)/500 + 3/1000) + ((1797*t)/250 - 673/250)*(heaviside(t + 1/10) - heaviside(t + 9/25)) + (dirac(t + 1/10) - dirac(t + 9/25))*((1797*t^2)/500 - (673*t)/250 + 503/1000)))

end
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回顶部 返回列表