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));
end

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');
end
result = [resultCell{:}]
result =
1×3 MException array with properties: identifier message cause stack Correction

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products


Release

R2019a

Community Treasure Hunt

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

Start Hunting!