Parfor converting object to double?

3 views (last 30 days)
David K
David K on 15 Apr 2021
Answered: Edric Ellis on 16 Apr 2021
I am trying to parallelize some of my code to make it run quicker and ran into a weird error that I get in 2019a but not in 2020b. The error states:
The following error occured converting DataObj to double: Converstion to double from DataObj is not possible.
This doesn't happen when I am running serially with a for loop instead. If I set DataObj.double to output a double, then I get the error Assertion failed in consume_assign at line 24. A simplified version of my code is below.
Why am I seeing this in older versions, and is there a way to fix this to work on older versions?
dataSet = repmat(DataObj.empty(),1,N);
for ii = 1:N
dataSet(ii) = DataObj(info(N));

Accepted Answer

Edric Ellis
Edric Ellis on 16 Apr 2021
In older versions that exhibit the problematic behaviour, your best bet is probably to use a cell, like so:
N = 3;
resultCell = cell(1, N);
parfor i = 1:N
resultCell{i} = MException('dummy:exception', 'Just for this example');
result = [resultCell{:}]
result =
1×3 MException array with properties: identifier message cause stack Correction

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!