假设给定一个长度为奇数的对称行向量,向量中前半部分每个元素都比后面的元素小,后半部分每个元素都比下一个元素大,中间的元素最大。(例如
我想创建一个正方形矩阵,其中这个行向量是它的中间行,相应的列向量 (
例如: 如果
[1 2 3 2 1]
或[10 20 50 20 10]
)。我想创建一个正方形矩阵,其中这个行向量是它的中间行,相应的列向量 (
v'
) 是其中间列,每一行或每一列的“原始元素”都是给定向量根据该行或列的中间元素缩减而来。当没有更多的“原始元素”时,我们放置0
。例如: 如果
v = [1 2 3 2 1]
,则得到以下结果:0 0 1 0 0
0 1 2 1 0
1 2 3 2 1
0 1 2 1 0
0 0 1 0 0
如果 v = [3 5 3]
,我们会得到
0 3 0
3 5 3
0 3 0
我的所作所为:我写了以下代码,成功创建了一个以v
作为中间行,v'
作为中间列的矩阵:
s = length(vector);
matrix= zeros(s);
matrix(round(s/2),:) = vector;
matrix(:, round(s/2)) = vector';
但在指定其他值时卡住了。
hankel
函数在内部使用bsxfun
。 - horchlerbsxfun
的方式与使用bsxfun
实现hankel
的方式不相似。据我所知,hankel
有bsxfun(@plus)
。 - Divakar