symbolic units: sym.saveobj bottleneck
조회 수: 1 (최근 30일)
이전 댓글 표시
Hi all,
I'm experiencing a quite significant bottleneck when saving data which includes symbolic measurement units. I'm using symbolic units (e.g. symunit('s')) to represent all of my measurement units - it seemed like a pretty neat feature at face value! Here is some code to demonstrate the issue:
%% Create some dummy data
clear
N = 30;
for n1 = 1:N
myData(n1).x = (0:0.01:5).';
myData(n1).xUnit = symunit('s');
% myData(n1).xUnit = sym('a');
myData(n1).y = sin(2*pi*(1+rand) * myData(n1).x );
myData(n1).yUnit = symunit('V');
% myData(n1).yUnit = sym('b');
end
%% Save to a file - takes ~20s
profile on
save('myData.mat', 'myData')
profile report
%% Save again to another file - takes ~0.2s
profile on
save('myData2.mat', 'myData')
profile report
So for 30 channels of data with a time and voltage unit expressed as symbolic, saving to a file will take ~20s. If we save the data again to another file, it is much faster at ~0.2s. If we run again from the start (clearing the data in the process), it will take ~20s again. If we replace the symunit() calls with sym() (comment out the symunit calls and uncomment the sym calls), it takes ~0.2s again. So I gather that A) the issue is specific to symbolic units, not symbolics in general, and B) the result of the expensive computation is held persistently and is not re-done on a second call.
I'm running MATLAB R2019B, but can update to a later release if necessary.
I'd be very grateful if anyone can help understand:
- Is this bottleneck addressed in a later version of Matlab?
- Are there any possible workarounds?
Many thanks,
Ben
댓글 수: 0
답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Number Theory에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!