How do I preallocate memory
I get the error message at the end of the first for loop (after code: OutData(ii).hucID = hucID;) that I should consider preallocating memory. How do I do that for the following code:
for ii = 1:length(hucPoly)
hucSub = polyshape(hucPoly(ii).X, hucPoly(ii).Y);
hucID = hucPoly(ii).Name;
OutData(ii).hucID = hucID;
for i = 1:size(inFiles,1)
inShapeOld = shaperead([dataFolder char(inFiles.OldShape(i))]);
inPolyOld = polyshape([inShapeOld.X],[inShapeOld.Y], ‘Simplify’, false);
inShapeNew = shaperead([dataFolder char(inFiles.NewShape(i))]);
inPolyNew = polyshape([inShapeNew.X],[inShapeNew.Y], ‘Simplify’, false);
inPolyNewsub = intersect(inPolyNew, hucSub,’KeepCollinearPoints’,true);
inPolyOldsub = intersect(inPolyOld, hucSub);
[OutData(ii).intsecArea(i).Data, S] = polyIntersect(CoRegErrData, inPolyNewsub, inPolyOldsub);
OutData(ii).intsecArea(i).ID = char(inFiles.NewShape(i));
if ~isnan(S(1).X(1))
shapewrite(S, [dataFolder ‘outShapes_S’ hucID ‘_outInt_’ char(inFiles.NewShape(i))])
end
T = table(OutData(ii).intsecArea(i).Data, ‘VariableNames’, {‘outInt_acres1’ });
writetable(T, [dataFolder ‘outTables_S’ hucID ‘_outInt_’ char(inFiles.NewShape(i)) ‘.txt’])
end
endI get the error message at the end of the first for loop (after code: OutData(ii).hucID = hucID;) that I should consider preallocating memory. How do I do that for the following code:
for ii = 1:length(hucPoly)
hucSub = polyshape(hucPoly(ii).X, hucPoly(ii).Y);
hucID = hucPoly(ii).Name;
OutData(ii).hucID = hucID;
for i = 1:size(inFiles,1)
inShapeOld = shaperead([dataFolder char(inFiles.OldShape(i))]);
inPolyOld = polyshape([inShapeOld.X],[inShapeOld.Y], ‘Simplify’, false);
inShapeNew = shaperead([dataFolder char(inFiles.NewShape(i))]);
inPolyNew = polyshape([inShapeNew.X],[inShapeNew.Y], ‘Simplify’, false);
inPolyNewsub = intersect(inPolyNew, hucSub,’KeepCollinearPoints’,true);
inPolyOldsub = intersect(inPolyOld, hucSub);
[OutData(ii).intsecArea(i).Data, S] = polyIntersect(CoRegErrData, inPolyNewsub, inPolyOldsub);
OutData(ii).intsecArea(i).ID = char(inFiles.NewShape(i));
if ~isnan(S(1).X(1))
shapewrite(S, [dataFolder ‘outShapes_S’ hucID ‘_outInt_’ char(inFiles.NewShape(i))])
end
T = table(OutData(ii).intsecArea(i).Data, ‘VariableNames’, {‘outInt_acres1’ });
writetable(T, [dataFolder ‘outTables_S’ hucID ‘_outInt_’ char(inFiles.NewShape(i)) ‘.txt’])
end
end I get the error message at the end of the first for loop (after code: OutData(ii).hucID = hucID;) that I should consider preallocating memory. How do I do that for the following code:
for ii = 1:length(hucPoly)
hucSub = polyshape(hucPoly(ii).X, hucPoly(ii).Y);
hucID = hucPoly(ii).Name;
OutData(ii).hucID = hucID;
for i = 1:size(inFiles,1)
inShapeOld = shaperead([dataFolder char(inFiles.OldShape(i))]);
inPolyOld = polyshape([inShapeOld.X],[inShapeOld.Y], ‘Simplify’, false);
inShapeNew = shaperead([dataFolder char(inFiles.NewShape(i))]);
inPolyNew = polyshape([inShapeNew.X],[inShapeNew.Y], ‘Simplify’, false);
inPolyNewsub = intersect(inPolyNew, hucSub,’KeepCollinearPoints’,true);
inPolyOldsub = intersect(inPolyOld, hucSub);
[OutData(ii).intsecArea(i).Data, S] = polyIntersect(CoRegErrData, inPolyNewsub, inPolyOldsub);
OutData(ii).intsecArea(i).ID = char(inFiles.NewShape(i));
if ~isnan(S(1).X(1))
shapewrite(S, [dataFolder ‘outShapes_S’ hucID ‘_outInt_’ char(inFiles.NewShape(i))])
end
T = table(OutData(ii).intsecArea(i).Data, ‘VariableNames’, {‘outInt_acres1’ });
writetable(T, [dataFolder ‘outTables_S’ hucID ‘_outInt_’ char(inFiles.NewShape(i)) ‘.txt’])
end
end preallocate memory MATLAB Answers — New Questions