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)
假设我们有一个数组 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)