Скажем, мне задан симметричный вектор строки с нечетной длиной, где каждый элемент меньше, чем следующий в первой половине вектора, и каждый элемент больше, чем следующий во второй половине, а средний элемент - самый большой. (например, [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';
но застрял в назначении других значений.