在我之前提出的问题中:Matlab: How to compute the inverse of a matrix
我想知道如何执行逆操作
A = [1/2, (1j/2), 0;
1/2, (-1j/2), 0;
0,0,1]
T = A.*1
Tinv = inv(T)
输出为Tinv
=
1.0000 1.0000 0
0 - 1.0000i 0 + 1.0000i 0
0 0 1.0000
与第二张图片中的相同。第一张图片是矩阵A
然而,对于更大的矩阵说5乘5,如果我不使用身份,I
来执行元素乘法,我得到无穷大值。这是一个例子
A = [1/2, (1j/2), 1/2, (1j/2), 0;
1/2, (-1j/2), 1/2, (-1j/2), 0;
1/2, (1j/2), 1/2, (1j/2), 0;
1/2, (-1j/2), 1/2, (-1j/2), 0;
0, 0 , 0 , 0, 1.00
];
T = A.*1
Tinv = inv(T)
Tinv =
Inf Inf Inf Inf Inf
Inf Inf Inf Inf Inf
Inf Inf Inf Inf Inf
Inf Inf Inf Inf Inf
Inf Inf Inf Inf Inf
所以,我试图将T = A.*I
乘以I = eye(5)
,然后取反向事件,我没有获得无穷大值,我得到的元素2
不存在3×3矩阵情况的图片。结果如下
Tinv =
2.0000 0 0 0 0
0 0 + 2.0000i 0 0 0
0 0 2.0000 0 0
0 0 0 0 + 2.0000i 0
0 0 0 0 1.0000
如果对于3乘3矩阵的情况,我使用I = eye(3)
,然后再次得到元素2.
Tinv =
2.0000 0 0
0 0 + 2.0000i 0
0 0 1.0000
适当的方法是什么?
问题:对于一般情况,对于任何大小的矩阵m by m
,我应该使用I = eye(m)
进行乘法运算吗?使用I
可以阻止无穷大值,但会生成新的数字2
。我真的很困惑。请帮忙
UPDATE:这里是完整的图像,其中Theta是3个未知数的向量,即Theta1,Theta1 *和Theta2是3个标量值参数。 Theta1是一个复数值,因此我们将它分为两部分,Theta1和Theta1 *,Theta2是一个实数值。 g是复值函数。相对于Theta的复值函数的导数的表达式评估为T ^ H.由于有3个未知数,矩阵T的大小应为3乘3。
答案 0 :(得分:2)
你的问题与你的想法略有不同。图像矩阵中的符号( I , 0 )不一定是标量(仅适用于n = 1
),但它们是实际上是方矩阵。
I 是一个单位矩阵, 0 是一个零矩阵。如果你像这样对待这些矩阵,你将获得预期的答案:
n = 2; % size of the sub-matrices
I = eye(n); % identity matrix
Z = zeros(n); % matrix of zeros
% your T matrix
T = [1/2*I, (1j/2)*I, Z;
1/2*I, (-1j/2)*I, Z;
Z,Z,I];
% inverse of T
Tinv1 = inv(T);
% expected result
Tinv2 = [I,I,Z;
-1j*I,1j*I,Z;
Z,Z,I];
% max difference between computed and expected
maxDist = max(abs(Tinv1(:) - Tinv2(:)))
答案 1 :(得分:1)