MATLAB 运算符的排序
Ordering of MATLAB operator
我试图理解用于研究的 MATLAB 代码,但似乎陷入了关于转置运算符和 ml 除运算符顺序的基本问题。 (请看下面的代码)
C = randi([0 ,1], [3,3])
D = randi([0 ,1], [3,3])
disp("C-(D')*(C\D')")
disp(C-(D')*(C\D'))
(您可能需要 运行 多次,直到存在逆函数)
因为转置运算符是在 \
运算符之前计算的,所以 C\D'
似乎应该等于找到 x
s.t。 C=(D')*x
...但是,当我将 x
替换为 C\D'
并显示 C-(D')*x
时,我没有得到零...任何人都可以给我一个原因吗?
C = [0,0,1;0,1,0;1,0,1];
D = [1,1,0;1,0,1;1,0,0];
%% rule
% "A \ B" equal to "inv(A) * B"
% "B / A" equal to "B * inv(A)"
%% mine
X = C / D'; % X = C * inv(D')
C - X * D' % C - (C * inv(D')) * D' = C - C * (inv(D') * D') = 0
%% yours
Y = C \ D'; % Y = inv(C) * D'
C - D'* Y % C - D' * (inv(C) * D') ≠ 0
我试图理解用于研究的 MATLAB 代码,但似乎陷入了关于转置运算符和 ml 除运算符顺序的基本问题。 (请看下面的代码)
C = randi([0 ,1], [3,3])
D = randi([0 ,1], [3,3])
disp("C-(D')*(C\D')")
disp(C-(D')*(C\D'))
(您可能需要 运行 多次,直到存在逆函数)
因为转置运算符是在 \
运算符之前计算的,所以 C\D'
似乎应该等于找到 x
s.t。 C=(D')*x
...但是,当我将 x
替换为 C\D'
并显示 C-(D')*x
时,我没有得到零...任何人都可以给我一个原因吗?
C = [0,0,1;0,1,0;1,0,1];
D = [1,1,0;1,0,1;1,0,0];
%% rule
% "A \ B" equal to "inv(A) * B"
% "B / A" equal to "B * inv(A)"
%% mine
X = C / D'; % X = C * inv(D')
C - X * D' % C - (C * inv(D')) * D' = C - C * (inv(D') * D') = 0
%% yours
Y = C \ D'; % Y = inv(C) * D'
C - D'* Y % C - D' * (inv(C) * D') ≠ 0