我有以下问题,并没有想到没有for循环的方法.
考虑两个矩阵:
a=rand(N,3), b=rand(3,N)
我想得到的是:( b(:, i)*a(i, :)一个3*3矩阵)在所有的第三维中连接起来i.
因此,对于上述示例,结果应该是(3*3*N)矩阵.
Matlab R2016b版:
c = reshape(a.',[1,3,N]) .* reshape(b,[3,1,N]);
Run Code Online (Sandbox Code Playgroud)
早期的Matlab版本:
c = repmat(reshape(a.',[1,3,N]),[3,1,1]) .* repmat(reshape(b,[3,1,N]),[1,3,1]);
Run Code Online (Sandbox Code Playgroud)
编辑:这是Matlab R2016b(Win7x64)的快速基准测试.矢量化的加速大约是50倍.
| 归档时间: |
|
| 查看次数: |
676 次 |
| 最近记录: |