求矩阵单元的逆

16次(最近30天)
安德鲁krugle
安德鲁krugle 2021年2月24日
MVP Walter很棒,帮助我创建了一个矩阵单元,但我遇到了一个问题,我需要找到每个矩阵的逆矩阵。我的代码是:
T1_theta = [90:5:90];
M =信德(T1_theta);
N = cosd (T1_theta);
T1 = arrayfun(@(m,n)[m^2 n^2 0 0 2*m*n;
N ^2 m^2 0 0 -2*m* N;
0 0 1 0 0 0;
0 0 0 m -n 0;
0 0 0 n m 0;
-m*n m*n 0 0 0 m^2-n^2“统一”, 0);
这段代码生成了一个由6x6矩阵组成的1x37单元格。我认为代码:
发票(T1)
可以,但我能理解为什么不行。我在想是否可能在单元格上做另一个"arrayfun"函数如果可能的话?

答案(2)

詹姆斯Tursa
詹姆斯Tursa 2021年2月24日
编辑:詹姆斯Tursa 2021年2月24日
是的,你可以这样做:
T1inv = cellfun (@inv, T1,“大学”、假);
也就是说,这回避了这样一个问题:您将在您的代码中如何处理这个下游,如果可能没有更好的公式来解决您的整体问题,那么使用反斜杠代替。你将如何在你的代码中使用T1逆?

沃尔特·罗伯森
沃尔特·罗伯森 2021年2月24日
T1 = cellfun(@inv, T1,)“统一”, 0);
但是,大多数时候应该避免使用inv()。通常你不需要一个矩阵的逆矩阵本身:你通常需要将逆矩阵乘以另一个矩阵。在这种情况下,你应该更换 发票(一)* B 一个\ B 你应该替换 B *发票(A) B / A
例如,如果你计划用常数B做T1inv{1}*B,那么不是形成T1inv做
T1invB = cellfun(@(A)A\B, T1,“统一”, 0);
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年2月24日
C* t1, t1, t2,“统一”, 0);
col1mat = cell2mat (cellfun (@ (c) c (: 1), C_bar(:)。“统一”, 0));
C_bar(:)。’是用来确保C_bar是单元格的行向量,而不是潜在的单元格的列向量。没有“重塑到行向量”操作符,但有“重塑到列向量”操作符和转置操作符,因此(:)。',然后使它成为行。您可以删除(:)。’,如果您确定C_bar将是单元格的行向量。

登录评论。

标签

下载188bet金宝搏

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!