Matlab 三维矩阵操作怎样用矩阵运算代替for循环

下面的程序怎样用矩阵运算代替for循环,用for循环太耗时间了alpha=randn(2,2,1e5);foriii=1:ma1(iii)=norm(alpha(:,:,... 下面的程序怎样用矩阵运算代替for循环,用for循环太耗时间了
alpha = randn(2,2,1e5);
for iii = 1:m
a1(iii) = norm(alpha(:,:,iii));
end
展开
 我来答
浪迹天涯的流星
2015-09-08 · 知道合伙人教育行家
浪迹天涯的流星
知道合伙人教育行家
采纳数:8922 获赞数:81534
对于基本办公软件比较擅长。

向TA提问 私信TA
展开全部
要计算三维矩阵每一层的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函数进行批量计算。
百度网友1c6e06f
推荐于2018-05-10 · TA获得超过2894个赞
知道小有建树答主
回答量:695
采纳率:66%
帮助的人:656万
展开全部
其实你要计算三维矩阵每一层的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函数进行批量计算。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3c63e6c
2014-04-25 · TA获得超过2848个赞
知道大有可为答主
回答量:3829
采纳率:68%
帮助的人:2781万
展开全部
a1(1:m) = norm(alpha(:,:,1:m));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式