Mam problemy z używaniem tablic struct w pętli parla Matlaba. Poniższy kod ma 2 problemy nie rozumiem:Używanie macierzy struct w 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
- To nie powiedzie się z powodu błędu
Error using parallel_function (line 589) Insufficient number of outputs from right hand side of equal sign to satisfy assignment.
- Na wyjściu zmienna
s
jest wektorem, a nie tablicą (jak powinno być, nawet jeśli złamanie kodu przed zakończeniem).
EDIT problem zostanie rozwiązany, jeśli zainicjować tablicę struct do prawidłowej wielkości, przez:
s=struct('a',cell(2,4),'b',cell(2,4));
Chciałbym jednak nadal być szczęśliwy, aby uzyskać wiedzę o problemie (np chodzi rajd bug, jak zasugerował Oleg Komarov)
Do punktu 2, co masz na myśli „tablicę” zamiast „wektor”? W Matlabie nie ma różnicy. Wydaje mi się, że 's' powinno być macierzą 2x4' struct's na końcu tego kodu. – jazzbassrob
Myślę, że to w rzeczywistości błąd i zalecam przesłanie [support equest] (http://www.mathworks.it/support/service_requests/contact_support.do?) I informowanie nas na bieżąco. – Oleg
@jazzbassrob, wektor jest tablicą 1xd (lub dx1). –