Select 在 MATLAB 中用一个命令进行子矩阵和矢量化

Select submatrix and vectorize in one command in MATLAB

假设我们有一个数组 A = ones(2, 2, 2) 和另一个矩阵 P = rand(4)。我想知道是否可以编写代码

temp = A(:, :, 1);
X = P * temp(:);

写成一行代码,节省temp消耗的内存。我试着 运行

X = P * A(:, :, 1)(:);

但这不起作用。我也摸索着 reshape 命令,但无法使其工作。

我无法使用网络或此论坛找到答案。是否可以做我正在寻找的事情?

感谢您的帮助,

阿德里安

你可以做 -

[m,n,r] = size(A);
X = P*reshape(A(:,:,1),m*n,[])

如果您沿着 A 的第三个维度进行迭代,即对于 A(:, :, iter),其中 iter 是迭代器,您可以获得所有 X' s 在数组中以矢量化的方式像这样 -

X_all = P*reshape(A,m*n,[])

Reshape 应该有效。尝试这样做:

X = P * reshape(A(:, :, 1), [], 1)