首页 > 解决方案 > 如何在 MATLAB 中手动构建 toeplitz 矩阵

问题描述

我需要在 MATLAB 中构建一个名为 的 toeplitz 矩阵H,其中H有 size ,来自size256 x 256的向量。我需要用第-个元素行和第-个元素列填充矩阵,如下所示:h64 x 1HlHp

H(l,p) = h(l-p) if 0 <= (l-p) =< 64. 否则,H(l,p)=0;

我制作的代码如下:

h = randn(64,1); 

H = zeros(256,256); 
for l= 1:256
    for p = 1 : 256 
        if (l-p <= 64 && l-p >= 0)  
            H(l,p) = h(l-p); 
        end 
    end 
end

  

但是,我认为代码中存在错误,因为它没有给我预期的结果。

如何获得托普利兹矩阵?

标签: matlab

解决方案


出现问题l-p=0,因为h(0)会调用 的第零个元素h,并且由于 MATLAB 使用基于 1 的索引,因此会崩溃。只需删除检查中的等号:

h = randn(64,1); 

H = zeros(256,256); 
for l= 1:256
    for p = 1 : 256 
        if (l-p <= 64 && l-p > 0)  % Removed the = sign
            H(l,p) = h(l-p); 
        end 
    end 
end

推荐阅读