Parallel Processing code question, with error Subscripted assignment between dissimilar structures
조회 수: 7 (최근 30일)
이전 댓글 표시
I am trying to become familiar with the parallel toolbox and wrote what I think is a simple script that is failing and I don't understand why. I have included the code below.
clear all
close all
dataSetSize = 1024;
for x = 1:4:dataSetSize
Data(x).dataSet = rand(128,256);
Data(x+1).dataSet = rand(128,512);
Data(x+2).dataSet = rand(64,128);
Data(x+3).dataSet = rand(32,64);
end
parpool(4);
parfor x=1:dataSetSize
Data(x).plotData = 20*log10(abs(fft(Data(x).dataSet)));
end
I get the error
Error using parallelTest (line 15)
Subscripted assignment between dissimilar structures.
Line 15 is the line of the parfor loop. When I execute this as a regular loop it executes fine. I don't see any dependencies and think this should be able to run in parallel.
Any help would be greatly appreciated.
Thanks
댓글 수: 0
채택된 답변
Walter Roberson
2015년 5월 27일
You need to initialize the PlotData field before the loop. Even if you initialize it to [] that would be fine. In your code, the result of the parfor is a structure with a different set of fields than the original, and there are problems copying the data back because of that. Don't create new struct fields inside a parfor.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!