matlab怎么用矩阵运算代替for循环

a{m,n}是一个M*N的cell,每个cell是一个1*3的向量,b{j,k}是一个J*k的cell,每个cell也是一个1*3的向量,现在想实现一个新的四维矩阵c(m... a{m,n}是一个M*N的cell,每个cell是一个1*3的向量,b{j,k}是一个J*k的cell,每个cell也是一个1*3的向量,现在想实现一个新的四维矩阵c(m,n,j,k)=dot(a{m,n},b{j,k}),用for循环实在太慢,怎么用矩阵运算代替? 展开
 我来答
nn8ov6
2019-09-09 · TA获得超过7585个赞
知道大有可为答主
回答量:5778
采纳率:61%
帮助的人:678万
展开全部
要计算三维矩阵每一层的norm的话,用for是比较合适的,如果必须不用for的话,你可以试试这个流程:
>> a = randn( 2, 2, 3 )
a(:,:,1) =
0.3129 -0.0301
-0.8649 -0.1649
a(:,:,2) =
0.6277 1.1093
1.0933 -0.8637
a(:,:,3) =
0.0774 -1.1135
-1.2141 -0.0068
>> a1 = cellfun( @( x ) norm( x ), num2cell( a, [ 1 2 ] ) );
>> a1 = a1( : )
a1 =
0.9312
1.4482
1.2260
思路就是把三维矩阵转为一个元胞序列,元胞里的每个元素就是原始矩阵的每一层,然后利用cellfun函数进行批量计算。
追问
你答的这是啥啊??答非所问啊
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式