Я пишу код Matlab для решения нелинейных уравнений с частными производными. Я достиг точки, в которой мне нужна блок-матрица (M + 1)^2 по (M + 1)^2, содержащая A в качестве основной диагонали, B в позиции (i, i + 1), а C в (i, i + 2). то есть B и C находятся над главной диагональю A. Существует ли короткий способ построения таких матриц блоков?Создание блочной тридиагональной матрицы в matlab
0
A
ответ
1
Начнем с того, вы можете создать единый блок, используя triu функцию, как это:
M = 4;
A = 2; B = 3; C = 4;
onesMat = ones(M+1,M+1);
block = A*eye(M+1) + B*(triu(onesMat,1)-triu(onesMat,2)) + C*(triu(onesMat,2)-triu(onesMat,3));
block =
2 3 4 0 0
0 2 3 4 0
0 0 2 3 4
0 0 0 2 3
0 0 0 0 2
Если я правильно понимаю, и вы хотите создать блочно-диагональную матрицу, повторяя тот же блок M+1
раз, вы можете использовать blkdiag
для этого:
blocks = repmat({block}, M+1, 1);
res = blkdiag(blocks{:});
Смежные вопросы
- 1. Matlab: создание (непостоянной) тридиагональной матрицы
- 2. Matlab/Scilab/R: Создание блочной трехдиагональной матрицы в Scilab
- 3. Умножьте вектор с блочной матрицей в matlab
- 4. Создание этой матрицы в MATLAB
- 5. Создание матрицы Трехдиагональной в MATLAB
- 6. Создание 2D-матрицы в Matlab
- 7. Создание 3D-матрицы в matlab
- 8. Создание матрицы матрицы путем загрузки данных «MATLAB»
- 9. Запрос на создание матрицы матрицы matlab
- 10. Создание матрицы ядра матрицы радиальной матрицы в matlab
- 11. Создание Java-форматированной матрицы в MATLAB
- 12. Создание матрицы с петлей в Matlab
- 13. Создание минимальной матрицы вывода в MATLAB
- 14. Создание матрицы символов в MATLAB R2009b
- 15. создание порядка для матрицы в matlab
- 16. Создание симметричной матрицы из вектора в MATLAB
- 17. Создание матрицы с конкатенированной матрицей в Matlab
- 18. Создание набора данных из матрицы в Matlab
- 19. Создание разреженной матричной диагональной матрицы в Matlab
- 20. Создание конкретной большой матрицы в matlab
- 21. Экономичное создание симметричной матрицы в MATLAB
- 22. MATLAB: Создание матрицы, как в алгоритме Wavefront
- 23. Создание матрицы из векторов в MATLAB?
- 24. Создание матрицы массива ячеек в matlab
- 25. Создание трехмерной матрицы из матрицы и вектора в MATLAB
- 26. создание матрицы из строк другой матрицы в MATLAB
- 27. Создание матрицы с использованием заданной матрицы в MATLAB
- 28. Создание матрицы numdray матрицы симметрично
- 29. Оператор матрицы матрицы в Matlab
- 30. Matlab: Создание плоской структуры из Матрицы
это то, что я получаю после запуска ваших кодов: [5x5 двойного] [5x5 двойного] [5x5 двойного] [5x5 double] [5x5 double] – YYG
Не уверен, что вы имеете в виду. 'res', результат' blkdiag', является блок-диагональной матрицей 25x25. Если вы имеете в виду, что 'blocks' - это массив ячеек матриц' M + 1' - да, конечно. Нам нужно, чтобы они объединялись в одну блочно-диагональную матрицу, используя 'blkdiag'. –
Хорошо, если я понимаю вас, вы имеете в виду, что матрица блоков сформирована, только она не отображается? – YYG