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 展开
alpha = randn(2,2,1e5);
for iii = 1:m
a1(iii) = norm(alpha(:,:,iii));
end 展开
展开全部
要计算三维矩阵每一层的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函数进行批量计算。
>> 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函数进行批量计算。
展开全部
其实你要计算三维矩阵每一层的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函数进行批量计算。
>> 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函数进行批量计算。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a1(1:m) = norm(alpha(:,:,1:m));
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询