作业帮 > 综合 > 作业

matlab 实现连续信号采样后的反卷积.

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/04/28 10:56:46
matlab 实现连续信号采样后的反卷积.
num=[1];
den=[1 1 1]; %传递函数
>> t=0:0.001:10; %采样时间
L=length(t);
for i=1:1:L %0:0.001:10 时间内输入x
x(i)=i;
end
>> T0=0.001;
>> h=impulse(num,den,t);%求出系统的冲击响应
>> y=conv(x,h)*0.001; %输入和系统对应时间卷积
>> y=y(1:L); %前L个点为0:0.001:10 时间内对应的输出
以上是matlab 程序,之后用反卷积与之前理论输入的x差好多
matlab 实现连续信号采样后的反卷积.
之前回答的那个问题失效了...
[hh,e] = deconv(y,x); % y要用20001点那个序列,得到的hh是反卷积的结果,e是误差
再问: 我要做的是通过系统的输出y(t),和系统的对应时间的冲击响应h(t),去求解对应时间的x(t)。请问还有其他方法么?
再答: 在你那个程序后面接了几句,之前的问题应该出在截前10001点上了,统一按20001点做fft,反推得到的x再截前10001点就好了: num=[1]; den=[1 1 1]; %传递函数 t=0:0.001:10; %采样时间 L=length(t); for i=1:1:L %0:0.001:10 时间内输入x x(i)=i; end h=impulse(num,den,t);%求出系统的冲击响应 y=conv(x,h)*0.001; %输入和系统对应时间卷积 % y=y(1:L); %前L个点为0:0.001:10 时间内对应的输出 % 已知y和h,求x fy = fft(y); fh = fft(h,20001); fx = fy./fh; x = ifft(fx); plot(abs(x))