arrays - Matlab代码性能提升

标签 arrays algorithm performance matlab multidimensional-array

我有一个矩阵 A (MxN) 并且需要使用 A 创建一个矩阵 B (MxNxN) 使得 B(:,1,1) = A(:,1), B(:,2,2) = A(:,2),..., B(:,N,N) = A(:,N)。目前我在用,

B = zeros(size(A,1), size(A,2), size(A,2));
for i=1:size(B,3)
    B(:,i,i) = A(:,i);
end

是否可以使用 repmat 或任何其他方法使这段代码运行得比现在更快?

最佳答案

可以使用 "partial" linear indexing 来完成在B的最后两个维度上,如下:

[M, N] = size(A);
B = zeros(M, N, N);
B(:, 1:N+1:N^2) = A;

关于arrays - Matlab代码性能提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31776412/

相关文章:

algorithm - 求解递推关系 T(n)=T(n-1)*T(n-2)+c 其中 T(0)=1 和 T(1)=2

php - 在生产服务器上启用 XDebug 会使 PHP 变慢吗?

javascript - 比较和处理对象中的 bool 值

c++ - 最大化 tensorflow 多 GPU 性能

c - 如何对指针数组所指向的数组进行排序?

C多维数组堆赋值

algorithm - 两个字符串之间的插入、删除和替换

c# - 在数组中找到两个数字,使得它们的总和等于用户给出的数字

c++ - 以这种方式使用 memcpy() 是不好的做法吗?

arrays - ELM 如何解码 json 数组中的不同值