首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何高效地计算toeplitz矩阵

如何高效地计算toeplitz矩阵
EN

Stack Overflow用户
提问于 2019-03-20 06:19:32
回答 1查看 103关注 0票数 0

假设我有一个向量x和2个常量,初始化如下:

代码语言:javascript
复制
x = [ones(1,21) zeros(1,79)]; %step of 100 components
p = 2; q = 0;

现在,我想构建这个矩阵:

但是在这个例子中,例如x(q-1) = x(-1)不存在,所以我希望它是0,我想知道是否有一种方法可以用最少的代码行来实现它。注意,矩阵可以用函数toeplitz()编写,但是我不知道如何用零替换向量x中不存在的位置。

我希望有人能帮助我。感谢您的回答。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-20 16:34:44

您需要小心使用从零开始的索引或从1开始的索引。

在你的问题中,你说负索引是无效的-在MATLAB中,索引0也是无效的。下面的代码假设您的x(q)如上所述是从零开始的,但我进行了+1转换。如果q+p-1numel(x)附近,请注意这一点。

代码语言:javascript
复制
x = [ones(1,21) zeros(1,79)]; %step of 100 components
p = 2; q = 0;

% Set up indexing matrix using implicit expansion (R2016b or newer)
m = ( q:-1:q-p+1 ) + ( 0:1:q+p-1 ).';
% Convert from 0-based to 1-based for MATLAB
m = m + 1;
% Set up output matrix, defaulting to zero
M = zeros( size( m ) );
% Put elements where 'm' is valid from 'x' into output 'M'
M( m > 0 ) = x( m( m > 0 ) );

输出是一个(q+p) * p矩阵。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55250813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档