如何在Matlab中快速生成多维数组(或张量)?

问题描述 投票:1回答:1

我尝试创建一个带有3个索引k=0,...,K-1, m'=0,...,M-1, m=0,...,M-1的3d数组。我可以生成这样一个3d数组,其位置(k,m',m)的元素是k/K+m'-m的某种快速方式吗?我目前的方法是使用3层for循环来计算每个元素。这有点笨拙,我相信一定有更好的方法。所以有人能给我一些启发吗?感激。 顺便提一下另一个问题。我可以从矩阵A和矢量b生成一个3d数组吗?我的意思是b中的每个元素都用A做一些计算,这样我们就可以得到一个3d数组?如何?

arrays matlab tensor
1个回答
3
投票

你需要创建3个向量:

 k  of size [1 x K x 1] ,
 mp of size [M x 1 x 1] and
 m  of size [1 x 1 x M].

使用implicit expansion,您可以创建所需的数组:

K = 5;
M = 7;

k  = 0:K-1;
mp = (0:M-1).'
m  = reshape(0:M-1,1,1,[]);

result = k/K+mp-m;

请注意,它比ndgrid解决方案更有效。

© www.soinside.com 2019 - 2024. All rights reserved.