【发布时间】:2015-11-17 11:48:23
【问题描述】:
假设我得到一个奇数长度的对称行向量,其中每个元素小于向量前半部分的下一个元素,每个元素都大于后半部分的下一个元素,中间元素是最大的。 (例如[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';
但在分配其他值时遇到了困难。
【问题讨论】: