编辑:
实现了一种使其更快的方法并添加了解释。
使用arrayfun
允许您将函数单独应用于tf
每个元素a
。
它输出为单元格数组,因此您需要使用将其转换回矩阵cell2mat
。
tf = @(alpha) [cos(alpha),sin(alpha);-sin(alpha),cos(alpha)];
Tf =@(a) cell2mat(arrayfun(@(A) tf(A), a, 'uni', 0));
所以如果你输入一个 1xN 向量,你会得到一个 2x2N 矩阵,如果你输入一个 Nx1 向量,你会得到一个 2Nx2 矩阵。
>> a = rand(2)
a =
6.323592462254095e-01 2.784982188670484e-01
9.754040499940953e-02 5.468815192049839e-01
>> Tf(a)
ans =
Columns 1 through 3
8.066353232983801e-01 5.910494524211303e-01 9.614693800974246e-01
-5.910494524211303e-01 8.066353232983801e-01 -2.749120425428361e-01
9.952467051120759e-01 9.738580986754016e-02 8.541503641387258e-01
-9.738580986754016e-02 9.952467051120759e-01 -5.200261103460884e-01
Column 4
2.749120425428361e-01
9.614693800974246e-01
5.200261103460884e-01
8.541503641387258e-01
>> Tf(a) - [tf(a(1,1)), tf(a(1,2)); tf(a(2,1)), tf(a(2,2))]
ans =
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0