例如,在循环中:
for i=1:10,
% do something...
end
Run Code Online (Sandbox Code Playgroud)
作为矩阵的索引:
mat( i, j ) = 4;
Run Code Online (Sandbox Code Playgroud)
为什么不应该他们作为在Matlab的变量名?
假设我有一个AxBxC矩阵X 和一个BxD矩阵Y.
是否有一种非循环方法,通过它我可以将每个C AxB矩阵与Y?
我正在寻找一个SIMD库,专注于小型(4x4)矩阵操作的图形.那里有很多单精度的,但我需要支持单精度和双精度.
我看过英特尔的IPP MX库,但我更喜欢有源代码的东西.我对这些特定操作的SSE3 +实现非常感兴趣:
编辑:请不要"过早优化"答案.任何使用小矩阵的人都知道GCC不会对这些以及手动优化的内在函数或ASM进行矢量化.在这种情况下,这很重要,或者我不会问.
可能重复:
MATLAB:如何向量乘两个矩阵数组?
有没有办法在Matlab中签订高维张量?
例如,假设我有两个三维数组,具有以下大小:
size(A) == [M,N,P]
size(B) == [N,Q,P]
Run Code Online (Sandbox Code Playgroud)
我想承包A和B分别在第二和第一指标.换句话说,我想考虑A成为一个大小矩阵的数组,[M,N]并且B是等长的[N,Q]矩阵数组; 我想逐个元素(逐个矩阵)乘以这些数组来获得大小[M,Q,P].
我可以通过for循环来做到这一点:
assert(size(A,2) == size(B,1));
assert(size(A,3) == size(B,3));
M = size(A,1);
P = size(A,3);
Q = size(B,2);
C = zeros(M, Q, P);
for ii = 1:size(A,3)
C(:,:,ii) = A(:,:,ii) * B(:,:,ii);
end
Run Code Online (Sandbox Code Playgroud)
有没有办法避免for循环?(也许可以使用任意数量维的数组?)
我有1000个5x5矩阵(Xm),如下所示:

每个$(x_ij)m $是从分布中得出的点估计.我想计算cov每个$ x {ij} $ 的协方差,其中i = 1..n,并且j = 1..n在红色箭头的方向上.
例如,$ X_m $的方差是`var(X,0,3),它给出了5x5的方差矩阵.我能以同样的方式计算协方差吗?
尝试回答
到目前为止我已经这样做了:
for m=1:1000
Xm_new(m,:)=reshape(Xm(:,:,m)',25,1);
end
cov(Xm_new)
spy(Xm_new) gives me this unusual looking sparse matrix:
Run Code Online (Sandbox Code Playgroud)
