我在matlab编写了一个程序,我的算法取决于几个参数,让我们用a=1:10
和b=1:10
说a和b我想找到a
和{{1}的值这给了我最好的结果。
我的主要代码如下:
b
该程序运行但计算量非常大。我想知道是否有任何matlab内置并行处理工具箱,在这种情况下对我有帮助。我正在思考这些问题:
将我的主程序划分为
部分:a= 0.1:0.1:1;
b= 1:1:10;
arr_mat = zeros(length(a),length(b));
for i=1:length(a)
for j=1:length(b)
disp(['loop no = ',num2str(i),' & ',num2str(j)]);
knn = a(j);
eta = b(i);
arr_mat(i,j) = called_function(knn,eta);
end
end
并行运行代码。我的系统配置是:Intel Core i7-3770 @ 3.40 GHz,内存为32.0 GB。我安装了MATLAB 2013b。
我已经咨询了这个question,并试图以这种格式编写自己的代码:
a1= 0.1:0.1:0.5;
b1= 1:1:5;
arr_mat1 = zeros(length(a1),length(b1));
for i1=1:length(a)
for j1=1:length(b)
disp(['loop no = ',num2str(i1),' & ',num2str(j1)]);
knn1 = a1(j);
eta1 = b1(i);
arr_mat1(i,j) = called_function(knn1,eta1);
end
end
a2= 0.6:0.1:1;
b2= 6:1:10;
arr_mat2 = zeros(length(a2),length(b2));
for i2=1:length(a2)
for j2=1:length(b2)
disp(['loop no = ',num2str(i2),' & ',num2str(j2)]);
knn2 = a2(j);
eta2 = b2(i);
arr_mat2(i,j) = called_function(knn2,eta2);
end
end
此代码引发错误:“非法使用保留关键字”end“。” 我的疑问:
答案 0 :(得分:1)
matlabpool不会打开需要结束end
的语句。在链接的问题中,结束了spmd
语句。
陈述matlabpool open local 2
的含义是:
matlabpool
打开或关闭一个matlab并行处理工作进程池。
open
告诉matlab运行这些工作人员。 (这是默认值)
local
告诉matlab在本地计算机上打开这些工作程序(这是默认设置)
2
告诉matlab运行2个这样的工人(默认是cpus的数量)
你可以在没有任何参数的情况下进行matlabpool。
要配置本地配置文件,请转到matlab主页选项卡,然后在并行菜单下选择“管理群集”。
另外,由于一些奇怪的原因,当parfor不在最内层循环中时,matlab无法在工作符之间拆分数组。将内心改为parfor,它会起作用。