我有一个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;
答案 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