大家好!
在Matlab中使用函数句柄时遇到了问题。
假设我得到了一个变换矩阵的函数句柄,比如说
Tf = @(alpha)reshape([cos(alpha),-sin(alpha),sin(alpha),cos(alpha)],[2,2]);
我有一个alpha矢量
alpha_list = [alpha1; alpha2; ...];
我希望得到像
这样的结果[Tf1; Tf2; ...];
我尝试过像
这样的方法Tf(alpha_list) feval(Tf,alpha_list) bsxfun(Tf,alpha_list)
他们都不起作用
有一种简单或神奇的方法可以做到这一点吗?
非常感谢!
答案 0 :(得分:2)
编辑:
实现了一种使其更快并添加解释的方法。
使用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
答案 1 :(得分:1)
致电 0.5403 0.8415
-0.8415 0.5403
-0.4161 0.9093
-0.9093 -0.4161
-0.4161 0.9093
-0.9093 -0.4161
寻求解决方案:
$db->multi_query($sql)
这里的关键是我使用reshape将向量指向第三维,这样它就不会干扰我们感兴趣的2。然后我们可以在输出上再次使用resarpe来保存块你正在寻找的结构。
这样,调用LAST_INSERT_ID()
将返回:
await
我还应该指出,如果你不太关心速度,有很简单的方法可以使用简单的循环来做到这一点......
编辑: 我在Tf(a)上切换了标志,因为它推出了Tf(a)'。现在是正确的。