Matlab中串行循环与并行循环的结果比较
代码如下:
%串行循环与并行循环的结果比较
mypool=parpool
n=8;
a1=zeros(n,1);
for i=1:8
a1(i)=i;
end
a2=zeros(n,1);
parfor i=1:8
a2(i)=i;
end
[a1 a2]
delete(mypool)
可能你初看这段代码不是很理解,没有关系,咱们一步一步的分析他。
第一行:用来说明这整段代码是比较串行循环与并行循环的结果(“%”用于在matlab中添加注释)
%串行循环与并行循环的结果比较
第二行:打开一个名字叫做mypool的并行计算池,
mypool = parpool
第三行:定义n等于8
n=8;
第四行:创建一个名字叫a1的全0矩阵(如图)。(zeros(m,n)在matlab中表示生成生成m*n阶的0矩阵)
a1=zeros(n,1);
第五行:采用串行循环执行,“i”的取值是从1到8
for i=1:8
第六行:把“i”赋给a1矩阵的第“i”个元素(例如把1赋给全0矩阵的第一个元素)
a1(i)=i;
第七行:for循环的结束(串行循环结束)
end
第八行:创建一个名字叫a2的全0矩阵
a2=zeros(n,1);
第九行:采用并行循环执行,“i”的取值是从1到8
parfor i=1:8
第十行:把“i”赋给a2矩阵的第“i”个元素(例如把1赋给全0矩阵的第一个元素)
a2(i)=i;
第十一行:parfor循环结束(并行循环结束)
end
第十二行:将a1和a2放在一个矩阵中
[a1 a2]
第十三行:关闭这个名字叫做mypool的并行计算池(打开和关闭时成对出现的)
delete(mypool)
这样是不是好点了呢
如果想看结果,点这里