信号与系统 2023(春季) 作业要求 - 第10次作业

01 础练习


一、Laplace反变换

  • : 下面的 Laplace 反变换都是针对 0- 单边 Laplace 反变换。

1、必做题

2、选做题

二、z 反变换

  • : 下面习题中都是进行 双边 z 反变换。

1、必做题

2、选做题

(1)求解 z 逆变换

(2)利用三种方法求解

  利用三种方法求解下面 X ( z ) X\left( z \right) X(z) 的逆变换 x [ n ] x\left[ n \right] x[n]

  : 三种方法包括:留数方法、因式分解方法、长除方法。

三、Laplace 变换性质

  • 本题都是必做题

1、利用 Laplace 性质求 Laplace变换

  (1)

  (2)

  (3)


  (4)

▲ 图1.3.1 右边周期信号

▲ 图1.3.1 右边周期信号

提示: 先求取单个周期 Laplace 变换, 再利用延迟定理。

  (5)
▲ 图1.3.2 周期冲激序列

▲ 图1.3.2 周期冲激序列

2、求信号的初值和终值

  已知下列信号的 Laplace 变换 F ( s ) F\left( s \right) F(s) , 在不求出信号 f ( t ) f\left( t \right) f(t) 时域表达式的情况下, 利用 Laplace 变换的终值和初值定理, 求出 f ( 0 + ) f\left( {0_ + } \right) f(0+) f ( ∞ ) f\left( \infty \right) f()

提示: (1) 求解过程中需要注意 Laplace 变换初值定理和终值定理条件。 (2) 对于带有 e − s e^{ - s} es 的表达式, 请运用Laplace的时移定理判断信号的初值和终值。

02 验作业


一、通过数值积分进行拉普拉斯反变换

1、利用傅里叶变换求拉普拉斯反变换

  拉普拉斯正变换和逆变换公式如下:

根据拉普拉斯逆变换公式,可以知道 f ( t ) f\left( t \right) f(t) 可以使用傅里叶变换的逆变换来完成

所以算法核心是对 F ( σ + j ω ) F\left( {\sigma + j\omega } \right) F(σ+) 进行傅里叶反变换,然后乘以 e σ t e^{\sigma t} eσt

  由于确认变换后的函数 f ( t ) f\left( t \right) f(t) 是实函数,所以为了节省计算时间只对傅里叶反变换积分在 ω ∈ [ 0 , + ∞ ) \omega \in \left[ {0, + \infty } \right) ω[0,+)进行积分,通常选择一个有限区间 ω ∈ [ 0 , ω max ⁡ ] \omega \in \left[ {0,\omega _{\max } } \right] ω[0,ωmax] 进行积分。对积分变量的实部取相同的 σ \sigma σ ,积分结果乘以 2 2 2 得到 f ( t ) f\left( t \right) f(t)

在实际实现过程中,对于 σ \sigma σ 的选择,如果信号时右边信号,只要选择 σ \sigma σ 比最右边极点的实部稍微大一点点即可。

2、数值积分

利用梯形积分来实现函数积分,可以获得更精确的积分制,理论分析可知:

其中 Δ x = ( b − a ) / N \Delta x = \left( {b - a} \right)/N Δx=(ba)/N 以及 x i = a + i ⋅ Δ x x_i = a + i \cdot \Delta x xi=a+iΔx ,那么积分误差上限为

其中 ∣ f ′ ′ ( x ) ∣ ≤ K 2 \left| {f''\left( x \right)} \right| \le K_2 f′′(x)K2 x ∈ [ a , b ] x \in \left[ {a,b} \right] x[a,b]

▲ 图2.1.1 。 提醒积分方法示意图

▲ 图2.1.1 。 提醒积分方法示意图

  计算 T N ( f ) T_N \left( f \right) TN(f) 可以有两种方法:

  • 方法1: 对于左、右黎曼积分加权平均

  • 方法2:

  实现的代码:

def trapz(f, a, b, N=50):
    x = linspace(a, b, N+1)
    y = f(x)
    y_right = y[1:]
    y_left = y[:-1]
    dx = (b-a) / N
    T = dx/2 * sum(y_right + y_left)
    return T

3、数值计算程序实现

  通过上面提醒积分方法,实现Laplace数值逆变换。具体子程序如下:

#------------------------------------------------------------
def invlt(t, fs, sigma, omiga, nint):
    omigadim = linspace(0, omiga, nint+1, endpoint=True)
    y = [(exp(1j*o*t) * fs(sigma+1j*o)).real for o in omigadim]
    y_left = y[:-1]
    y_right = y[0:]
    T = sum(y_right + y_left) * omiga/nint
    return exp(sigma*t) * T/ pi / 2

#------------------------------------------------------------
def fs(s):
    return 1/(s*s+1)

#------------------------------------------------------------
sigma = 0.2
omiga=200
nint=omiga*50

tdim = linspace(0, 2*pi* 3, 200)
ft = [invlt(t, fs, sigma, omiga, nint) for t in tdim]

4、通过数值计算完成下面拉普拉斯逆变换

  下面通过对一些基本常见函数的laplace变换,来测试一下上述程序的性能。

(1) sin ⁡ ( t ) \sin \left( t \right) sin(t)

sigma=0.2, omiga=200, nint=omiga*50

(2) e − t e^{ - t} et

sigam=-1+0.1, omiga=200, nint=omiga*50

(3) u ( t ) u\left( t \right) u(t)


(4) u ( t − 1 ) u\left( {t - 1} \right) u(t1)

(5) 周期方波信号

(6) 三角形脉冲信号

(7) 三角信号卷积

(8) 周期三角信号

二、利用解卷积进行z反变换

1、卷积与多项式相乘

  计算两个多项式的乘积,可以利用卷积来进行。比如对于由 a [ n ] , n = 0 , 1 , 2 , ⋯   , N a\left[ n \right],n = 0,1,2, \cdots ,N a[n],n=0,1,2,,N b [ n ] , n = 0 , 1 , 2 , ⋯   , M b\left[ n \right],n = 0,1,2, \cdots ,M b[n],n=0,1,2,,M 构成系数的两个多项式 ∑ i = 0 N a i z − i \sum\limits_{i = 0}^N {a_i z^{ - i} } i=0Naizi ∑ i = 0 M b i z − i \sum\limits_{i = 0}^M {b_i z^{ - i} } i=0Mbizi。它们的乘积

的系数 c [ n ] , n = 0 , 1 , 2 , ⋯   , M + N − 1 c\left[ n \right],n = 0,1,2, \cdots ,M + N - 1 c[n],n=0,1,2,,M+N1 可以有 a [ n ] , b [ n ] a\left[ n \right],b\left[ n \right] a[n],b[n] 的卷积而得到

  那么,从 c [ n ] , b [ n ] c\left[ n \right],b\left[ n \right] c[n],b[n] 计算 a [ n ] a\left[ n \right] a[n] ,可以通过解卷积来获得。

2、z反变换与解卷积

z z z 反变换中,利用多项式除法来对有理分式的z变换进行反变换,因此,也可以由有理分式的分子系数,分母的系数通过解卷积的方式来完成多项式的除法。比如对于下面有理分式

它对应的序列为 x [ n ] = 0. 5 n ⋅ u [ n ] x\left[ n \right] = 0.5^n \cdot u\left[ n \right] x[n]=0.5nu[n] x [ n ] x\left[ n \right] x[n] 可以通过 z z z 除以 z + 0.5 z + 0.5 z+0.5 的多项式的系数来获得。

  利用 scipy.signal.deconvove() 函数来完成数值解卷积。下面给出了对应的代码:

from headm import *
from scipy import signal

num = [0]*20
num[0] = 1
den = [1,0.5]

div, remainder = signal.deconvolve(num, den)
plt.stem(div)

plt.xlabel("n")
plt.ylabel("x[n]")
plt.grid(True)
plt.tight_layout()
plt.show()

▲ 图2.2.1 解卷积的结果

▲ 图2.2.1 解卷积的结果

3、求解z反变换

  利用解决及求解下面两个Z反变换:

三、参考文献


■ 相关文献链接:

● 相关图表链接:

猜你喜欢

转载自blog.csdn.net/zhuoqingjoking97298/article/details/130410200
今日推荐