我在MATLAB编写的程序,我的算法依赖于几个参数,假设A和B a=1:10
和b=1:10
我想找到的a
和b
这些值,给了我最好的结果。并行处理查询
我的主要代码如下:
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
程序运行,但计算量非常大。我想知道是否有任何matlab内置的并行处理工具箱,这将有助于我在这种情况下。我是基于这样的思考:
鸿沟我的主程序成零件:
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
并行运行的代码。我的系统配置是:Intel Core i7-3770 @ 3.40 GHz,带有32.0 GB RAM。我安装了MATLAB 2013b。
我咨询这个question并试图写我自己的代码在格式:
clc;clear all;close all;
% run ixmas for different modifications
a= 0.1:0.1:1;
b= 1:1:10;
arr_mat = zeros(length(a),length(b));
matlabpool open local 2
parfor i=1:length(a)
for j=1:length(b)
disp(['loop no = ',num2str(i),' & ',num2str(j)]);
knn = a(j);
eta = b(i);
recog = 0;
for k=1:5
recog(k) = ixmas(knn,eta);
end
arr_mat(i,j) = mean(recog);
end
end
end
matlabpool close
此代码抛出了错误:“‘’非法使用保留关键字”结束 我的查询:
- 请请告诉我,我错了。
- 我试图在内部循环中引入parfor,但它引发错误?
- matlabpool open local 2是什么意思?
- 我的系统配置可并行使用多少个线程?我甚至可以检查这些限制并将其最优化地用于满负荷运行?
- 并行处理是指利用我自己机器的不同核心还是利用其他机器的资源?有没有办法可以选择任何选项,以及如何做到这一点?
你有3个循环开始(一个'parfor'和2'''),但是4''结束'。这是错误告诉你的问题。另请阅读[this](http://au.mathworks.com/help/distcomp/introduction-to-parfor.html),您应该尝试了解您的代码在做什么。 – David
请参阅高亮显示的链接,在给出的示例中还有一个额外的结尾 – roni