MATLAB提供了一个称为toeplitz的函数

来源:百度知道 编辑:UC知道 时间:2024/06/02 23:29:53
MATLAB提供了一个称为toeplitz的函数,可根据第一行和第一列生成toeplitz矩阵。用此函数开发另一个MATLAB函数来执行线性卷积,此函数的规范格式为:
function [y, H]=conv_tp(h, x)
% 用toeplitz矩阵的线性卷积
% [y, H]=conv_tp(h, x)
% y=列向量形式的输出序列
% H=对应于序列h的toeplitz矩阵,因而y=Hx
% h=列向量形式的冲激响应序列
% x=列向量形式的输入序列

这个问题怎么解决啊?

toeplitz函数的功能是生成托普利兹(toeplitz)矩阵。
托普利兹矩阵的特点是:除第一行、第一列外,其他每个元素都与它左上角的元素相同。
调用格式:
A=toeplitz(第1列元素数组,第1行元素数组)
例如:
>> clear
>> b=[3 4 1 6];
>> c=[3 2 5 8];
>> A=toeplitz(b,c)
A =
3 2 5 8
4 3 2 5
1 4 3 2
6 1 4 3
注意:第1行的第1个元素应与第1列的第1个元素相同,否则第1行的第一个元素将自动改为1列的第1个元素。

function [y,H] = conv_tp(x,h)
for i=1:length(h)
r(i)=h(length(h)+1-i);
end
for j=(length(h)+1):(length(x)+length(h)-1)
r(j)=0;
end
c(1)=h(length(h));
for k=2:length(x)
c(k)=0;
end
H=toeplitz(c,r);
y=x*H;
end
学长你好~