我有以下代码:
N=8;
K=10;
a=zeros(1,N^(K-1));
b=zeros(1,N^(K-1));
for ii=1:K
p0{ii}=rand(1,N);
p1{ii}=rand(1,N);
end
k=1;
for j1=1:N
for j3=1:N
for j4=1:N
for j5=1:N
for j6=1:N
for j7=1:N
for j8=1:N
for j9=1:N
for j10=1:N
a(k)=p0{1}(j1)*p0{3}(j3)*p0{4}(j4)*p0{5}(j5)*p0{6}(j6)*p0{7}(j7)*p0{8}(j8)*p0{9}(j9)*p0{10}(j10);
b(k)=p1{1}(j1)*p1{3}(j3)*p1{4}(j4)*p1{5}(j5)*p1{6}(j6)*p1{7}(j7)*p1{8}(j8)*p1{9}(j9)*p1{10}(j10);
k=k+1;
end
end
end
end
end
end
end
end
end
我无法为N=8
评估此代码,因为这需要花费很多时间。 p0
和p1
是大小为KxN
的矩阵。嵌套的for循环将省略p0
和p1
的一行,此处第二行对应于索引j2
。其余矩阵元素彼此相乘。因此,为了获得向量N^(K-1)
和a
,总共要进行b
个乘法。
是否有任何方法可以在不使用for循环的情况下或至少在合理的时间内执行此操作?