Parfor error - Error in ==> parallel_function>make_general_channel/channel_general at 894 Index exceeds matrix dimensions.
Infos
Cette question est clôturée. Rouvrir pour modifier ou répondre.
Afficher commentaires plus anciens
I have the following code:
classes = {'1_NATURE';'2_SECONDARY_CLASS';'3_TERTIARY_CLASS'}
windows = {'None';'k3';'k5';'k7';'k9';'k11';'k13';'k15';'k17';'k19'};
str1 = 'D:\STUDY\A_IIT_MS_Project\MATLAB_RESULTS\SEQUENCE_PPT\ALL_AGAIN\';
str2 = '\Results\PPT'; str3 = '\Results\Response'; str4 = 'MLR_4_';
matlabpool open 4
parfor class = 1:size(classes,1)
addpath(strcat(str1,classes{class,1}));
for window = 1:size(windows,1)
str_windows = strcat(windows{window,1},'_*');
cd (strcat(str1,classes{class,1},str2));
pre_list = struct([]); file_list = cell(zeros);
pre_list = dir(str_windows); file_list = {pre_list.name}';
cd (strcat(str1,classes{class,1},str3));
pre_list1 = struct([]); file_list1 = cell(zeros);
pre_list1 = dir('Response_*'); file_list1 = {pre_list1.name}';
for list = 3:size(file_list,1)
input4 = file_list{list,1};
in_resp4 = file_list1{list,1};
concat = strcat(str4,input4);
after_concat = regexprep(concat,('.mat'),'');
output4 = after_concat;
cd (strcat(str1,classes{class,1},str2));
Seq_num_prop_calc = cell(zeros);
Seq_num_prop_calc = load(input4);
cd (strcat(str1,classes{class,1},str3));
variables = cell(zeros);
variables = load(in_resp4);
% Multiple Linear Regression
pre_y = 0; pre_x = 0;
pre_y = cell2mat(variables(2:size(variables,1),1:7));
pre_x = cell2mat(Seq_num_prop_calc(2:size(Seq_num_prop_calc,1),5:53));
max_ppt = cell(zeros); count = 1;
%
for god = 1:size(pre_y,2) % 7 Kf-Ku responses
r_value = cell(zeros); a = 1; x1 = 0; x2 = 0;
y = pre_y(:,god);
for i = 1:size(pre_x,2)
for j = i+1:size(pre_x,2)
for k = j+1:size(pre_x,2)
for l = k+1:size(pre_x,2)
x1 = pre_x(:,i);
x2= pre_x(:,j);
x3 = pre_x(:,k);
x4 = pre_x(:,l);
x = [x1,x2,x3,x4];
x_1 = [x,ones(size(x(:,1)))];
[b, bint, r, rint, stats] = regress(y,x_1);
y_new = b(1)*x1 + b(2)*x2 + b(3)*x3 +b(4)*x4 + b(5);
r_check = corr(y_new,y);
god_response = variables{1,god}; ppt1 = Seq_num_prop_calc{1,i+4}; ppt2 = Seq_num_prop_calc{1,j+4};
ppt3 = Seq_num_prop_calc{1,k+4}; ppt4 = Seq_num_prop_calc{1,l+4};
o = (',');
s = strcat(god_response,o,ppt1,o,ppt2,o,ppt3,o,ppt4);
r_value(a,1) = {s};
r_value(a,2) = {b};
r_value(a,3) = {r_check};
r_value(a,4) = {stats};
a = a+1;
end
end
end
end
un_score = '_';
class_name = strcat(output4,un_score,god_response);
file_name = output4;
r_value_mat = cell2mat(r_value(:,3));
max_id = find(r_value_mat == max(r_value_mat));
if size(max_id,1) == 1
max_ppt(count,1) = {class_name};
max_ppt(count+1,2:5) = r_value(max_id,1:4);
count = size(max_ppt,1) + 1;
elseif size(max_id,1) > 1
max_ppt(count,1) = {class_name};
max_ppt(count+1:size(max_id,1),2:5) = r_value(max_id,1:4);
count = size(max_ppt,1) + 1;
end
end
cd (strcat(str1,'MLR\MLR_Results\MLR_4'));
savefunc (file_name, max_ppt, version)
end
end
end
matlabpool close
I am getting the following error:
??? Error using ==> parallel_function at 598 Error in ==> parallel_function>make_general_channel/channel_general at 894 Index exceeds matrix dimensions.
Error in ==> MLR_4 at 13 parfor class = 1:size(classes,1)
2 commentaires
Walter Roberson
le 14 Août 2013
Have you tried using a regular "for" and seeing if it works that way?
Réponses (0)
Cette question est clôturée.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!