Simplify JSON Decode for Loop

2 views (last 30 days)
Daniel Ward
Daniel Ward on 20 Oct 2020
Answered: Daniel Ward on 22 Oct 2020
Hi All,
I have some JSON data that I would like to flatten to a table. At the moment I am using a for loop to acheive this, but this is proving to be expensive in terms of time. Is there a way that I can do this without the loop.
Thanks
% This is really inefficient, I need to optimise this.
varNames = signals.tr.header';
varTypes = {'double','double','double','double','cell','double','double'};
t = table('Size',[signals.tr.returnCount 7],'VariableTypes',varTypes,'VariableNames',varNames);
p = cell2table(signals.tr.payload);
for i = 1:signals.tr.returnCount
t1 = p{i,1}{:,:}';
if isequaln(t1{:,6}, t1{:,7}) %if Lat & Long empty
t1{:,6} = nan;
t1{:,7} = nan;
end
t(i,:) = t1;
end

Accepted Answer

Daniel Ward
Daniel Ward on 22 Oct 2020
Hi,
I found a solution, which has taken my code down from 45 to less than 0.5 seconds. See below for the record.
p = signals.tr.payload;
t = cell2table(horzcat(p{:})','VariableNames',signals.tr.header');

More Answers (0)

Tags

Products

Community Treasure Hunt

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

Start Hunting!