Цикл для создания матрицы - PullRequest
2 голосов
/ 30 марта 2011

Я пытаюсь сделать цикл, который создаст матрицу соответствующего размера.Мне нужно, чтобы матрица была построена из указанного числа элементов, которые извлекаются из другой матрицы и складываются вместе.

Вот некоторый код псевдо:

    '

        n=10
        for x=1:1:n

            Kglobal=zeros(nxn)


        Kglobal(1,1)=1
        Kglobal(x+1,x+1)=Klocalx(2,1)
        Kglobal(x+1,x+2)=Klocalx(2,2)+Klocalx+1(1,1)'
if Kglobal(x+1,x+2)=(n+1,n)
   Kglobal(n,n)=Klocaln(2,2)
    end
end

Когда закончите, получится что-то вроде:

'  
 Kglobal=[ 1 0 0 0 0 0 0 0 0 0 0;
        Klocal1(2,1) Klocal1(2,2)+Klocal2(1,1) 0 0 0 0 0 0 0 0 0;
        0 Klocal2(2,1) Klocal2(2,2)+Klocal3(1,1) 0 0 0 0 0 0 0 0;
        0 0 Klocal3(2,1) Klocal3(2,2)+Klocal4(1,1) 0 0 0 0 0 0 0;
        0 0 0 Klocal4(2,1) Klocal4(2,2)+Klocal5(1,1) 0 0 0 0 0 0;
        0 0 0 0 Klocal5(2,1) Klocal5(2,2)+Klocal6(1,1) 0 0 0 0 0;
        0 0 0 0 0 Klocal6(2,1) Klocal6(2,2)+Klocal7(1,1) 0 0 0 0;
        0 0 0 0 0 0 Klocal7(2,1) Klocal7(2,2)+Klocal8(1,1) 0 0 0;
        0 0 0 0 0 0 0 Klocal8(2,1) Klocal8(2,2)+Klocal9(1,1) 0 0;
        0 0 0 0 0 0 0 0 Klocal9(2,1) Klocal9(2,2)+Klocal10(1,1) 0;
        0 0 0 0 0 0 0 0 0 Klocal10(2,1) Klocal10(2,2)];
'

Спасибо !!Я ценю любую помощь и буду часто проверять, поэтому, если есть что-то, что я могу попытаться объяснить лучше, пожалуйста, дайте мне знать!

1 Ответ

1 голос
/ 30 марта 2011

Создать такую ​​матрицу довольно просто, используя функцию spdiags.Например,

a=1:5;
b=6:10;
c=spdiags([a',b'],[-1,0],5,5);

создает разреженную матрицу, которая выглядит следующим образом

 6     0     0     0     0
 1     7     0     0     0
 0     2     8     0     0
 0     0     3     9     0
 0     0     0     4    10

, за исключением того, что память выделяется только для ненулевых элементов.Это должно ответить на ваш вопрос о том, как создать такую ​​матрицу.

Однако вопрос в том, как получить a и b, которые в вашем случае представляют собой набор Klocal матриц.Не очень понятно, что вы делаете в своем коде.Я предполагаю, что они могут быть выполнены как некоторые компактные операции матрица / ячейка, но не могу комментировать далее то, что дано.

В любом случае, если у вас уже есть матрицы Klocal, этого должно быть достаточно для начала работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...