MATLAB验证Parseval定理

目录

目录

1. 问题

2.注意

3.代码


1. 问题

2.注意

几个细节 

1. 求傅里叶级数,注意k等于0时,积分表达式可能不一样。

2. 当X(k)区分k=0和不等于0时,

\sum\limits_{k = - \infty }^{ + \infty } {|X(k){|^2} = } 2 \times \sum\limits_{k = 1}^{ + \infty } {X(k)conj(X(k)) + {X^2}(0)}

3. 若X(k)matlab求不出显含值,如e^(2),可用vpa求其近似值。

4.符号变量求和,用symsum

3.代码

% function signal_hw1_7
%% 求傅里叶级数,验证Parseval定理
clc;close all;clear;
syms t T k
T=2;
w=2*pi/T;
x(t)=sqrt((1-t.^2))
X=1/T*int(x*exp(-1i*k*w*t),t,-T/2,T/2) 
X0=1/T*int(x,t,-T/2,T/2) 

% 时域功率
power_x=int(1/T*abs(x).^2,t,-T/2,T/2)

for m=1:10
% 频域能量
% X的模,而非直接X
% 对符合变量求和 syms
% 得不到显示表达,用vpa得近似数值
power_X(m)=vpa( 2*symsum(X*conj(X),k,1,100*m) + X0^2);
% 频域与时域能量差
error(m)=power_x-power_X(m);
end
power_X(m)

subplot(2,1,1)
plot(100*[1:m],power_X)
hold on
plot(100*[1,m],[power_x,power_x])
xlabel('k')
ylabel('x/X')
legend('power_X','power_x','interpreter','latex')
subplot(2,1,2)
plot(100*[1:m],error)
xlabel('k')
ylabel('error')

结果:

x(t) =
 
(1 - t^2)^(1/2)
 
 
X =
 
besselj(1, pi*k)/(2*k)
 
 
X0 =
 
pi/4
 
 
power_x =
 
2/3
 
 
ans =
 
0.66666664136571330522750571298223

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_45111955

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值