matlab矩阵重构思想

时间:2017-10-30 11:47:54

标签: matlab matrix

我有一个n-by-n矩阵。我从该矩阵中删除第i行和第j列,以便使用较小的矩阵。 当我用这个新矩阵完成工作时,我想将这个较小的矩阵求和到旧的n * n,但避免在第i行和第j列上任何求和。我认为这是矩阵分区的问题。 有什么想法吗?

编辑:我有以下想法,您对此有何看法?

n_real=5;
%DEFINITION OF THE ADJUNCT SYSTEM
M_real(:,j)=[];  %removing column j from the mass matrix
M_real(i,:)=[];  %removing row i from the mass matrix
K_real(:,j)=[];  %removing column j from the stifness matrix
K_real(i,:)=[];  %removing row i from the stifness matrix
K=K_real;  
M=M_real;

AUX_DM=zeros(n_real);
AUX_DK=zeros(n_real);
for k=1:n_real      %rows index
for l=1:n_real      %columns index
    if l ~= i && k ~= j
        AUX_DM=DM_opt(k,l);     
        AUX_DK=DK_opt(k,l); 
    elseif l == i && k ~= j
        l=l+1;
    elseif k == j && l ~= i
        k=k+1;
    elseif k == j && l == i
        k=k+1;
        l=l+1;
    end
end
end

M_real_mod=M_real+AUX_DM;
K_real_mod=K_real+AUX_DK;

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望将新的“较小”数组添加到旧数组,但省略特定的行和列。您可以尝试使用以下代码创建新数组:

Z([1:i-1, i+1:n], [1:j-1, j+1:n]) = "new smaller";

第i行和第j列会有零。然后你只需将它添加到“旧”nxn数组。

例如,具有数组A,新数组h和i = 2,j = 3:

A =
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1
h =
     8     1     6
     3     5     7
     4     9     2
i=2; j=3;
>> Z([1:k-1, k+1:4], [1:j-1, j+1:4]) = h
Z =
     8     1     0     6
     0     0     0     0
     3     5     0     7
     4     9     0     2
>> A = A + Z
A =
    24     3     3    19
     5    11    10     8
    12    12     6    19
     8    23    15     3