У меня возникли проблемы с использованием структурных массивов в парфоре Matlab. Следующий код имеет 2 проблемы, которые я не понимаю:Использование структурных массивов в parfor
s=struct('a',{},'b',{});
if matlabpool('size')==0
matlabpool open local 2
end
for j = 1:2
parfor k=1:4
fprintf('[%d,%d]\n',k,j)
s(j,k).a = k;
s(j,k).b = j;
end
end
matlabpool close
- Он завершается с ошибкой
Error using parallel_function (line 589) Insufficient number of outputs from right hand side of equal sign to satisfy assignment.
- На выходе переменной
s
вектор, а не массив (как это должно быть, даже если разрывы кода перед завершением).
EDIT проблема будет решена, если я инициализировать структуры массивов до нужного размера, с помощью:
s=struct('a',cell(2,4),'b',cell(2,4));
Однако, я все еще был бы рад получить представление о проблеме (например, является его ралли, ошибка, о которой говорил Олег Комаров)
Для точки 2, то, что вы имеете в виду «массив», а не «вектор»? В Matlab нет никакого различия. Мне кажется, что '' 'должна быть матрицей 2x4' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' – jazzbassrob
Я думаю, что это на самом деле ошибка, и я рекомендую отправить [support equest] (http://www.mathworks.it/support/service_requests/contact_support.do?) И держать нас в курсе. – Oleg
@jazzbassrob, вектор - массив 1xd (или dx1). –