发现LTI系统的脉冲响应输入信号和输出。

196(30天)
你好,我是新Matlab和不知道如何解决以下问题,提前感谢你的解释。
一个信号序列x (n) ={1 1 1}是应用于LTI系统脉冲响应与一个未知的h (n),观察到的输出y (n) ={1、4、8、10、8、4、1}编写matlab程序找到h (n)。

答案(2)

Yazan
Yazan 2021年8月12日
编辑:Yazan 2021年8月12日
下面是代码,估计脉冲响应与3等效的方法:
clc,清晰
inpSig = (1 1 1);
outSig = (1、4、8、10、8、4、1];
%垫与零输入和输出信号,一个常见的长度(1024个样本)
comLength = 1024;
inpSigPad = [inpSig, 0 (1, comLength -长度(inpSig)));
outSigPad = [outSig, 0 (1, comLength -长度(outSig)));
%方法1
%估计脉冲响应直接使用Matlab
%这个函数使用韦尔奇的平均周期图估计信号的psd
%我使用矩形窗重叠0%(相当于普通fft)
(H1, f) = tfestimate (inpSigPad、outSigPad rectwin (comLength), 0, [], 1,“中心”);
%的方法2
%可以估计十字架和汽车使用Matlab psd
%假设统一的采样频率
pxx =运行cpsd (inpSigPad、inpSigPad rectwin (comLength), 0, [], 1,“中心”);
pxy =运行cpsd (inpSigPad、outSigPad rectwin (comLength), 0, [], 1,“中心”);
%传递函数的定义
H2 = pxy. / pxx;
图中,
情节(f, mag2db (abs (H1)));
持有
情节(f, mag2db (abs (H2)),“——”)
%的方法3
%估计使用fft的psd的输入和输出
X = fftshift (fft (inpSigPad));
Y = fftshift (fft (outSigPad));
%重排样品之间的频率响应(f / 2, fs / 2)
X =[(2:结束),X (1)];
Y =[(2:结束),Y (1)];
H3 = Y (:)。/ X (:);
情节(f(1:30:结束),mag2db (abs (H3(1:30:结束))),“o”);网格
包含(频率-赫兹的),ylabel (数据库级的)
传奇({“使用tfestimate”,“使用运行cpsd”,“使用FFT”})

保罗
保罗 2021年8月13日
编辑:保罗 2021年8月13日
我们知道y [n] = h [n] * x [n]其中*表示卷积。你有x [n]和[n]。让h [n]被表示为(h0 h1 h2等)。利用卷积的defnition总和定义用x y [0] [n]和h0。然后你就可以解出h0。重复定义用x y [1] [n], h0和h1。解h1。重复,直到完成。回想一下,卷积和的定义是:
信谊n k整数
信谊y (n) h (n) x (n)
y (n) = symsum (x (k) * h (n - k), k,负无穷,正)
y (n) =
我们可以做一个标准假设x [n] = y [n] = 0 n < 0没有任何其他信息的索引x和y。因此
y (n) = symsum (x (k) * h (n - k), k, 0,正)
y (n) =
但是我们也知道x [n] = 0 n > 2。因此
y (n) = symsum (x (k) * h (n - k), k, 0, 2)
y (n) =
现在,您可以编写一个程序来解决这个方程未知h [n]。这样做,你必须找出h值分配到h[1]和[2],并解释基于matlab阵列使用的索引上,但上面的发展假设x和y数组的第一个值对应于n = 0。
一旦你得到一个结果,你可以检查它是正确的使用
医生deconv

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!