我在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