假設我得到一個奇數長度的對稱行向量,其中每個元素小於向量前半部分中的下一個元素,每個元素大於第二個元素中的下一個元素一半和中間元素是最大的。 (例如[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';
但被分配其他值卡住了。
@Adrian和@AndrasDeak:'hankel'函數在內部使用'bsxfun'。 – horchler
哦,不要!我使用'bsxfun'的方式與使用'bsxfun.'實現'hankel'類似。AFAIK hankel有'bsxfun(@ plus')。 – Divakar