MATLAB: About Table Comparing in matlab code

comapretable

Best Answer

  • I would use the discretize function, using your comp data to set the edges (col 1) as well as the new values (col 2).
    Here's some code. Be sure to read the linked documentation page to understand how discretize works. Most of my code just ensures the formatting is preserved when loading the data.
    % Read comparison data as a table (Sheet 1)
    comp = readtable('Data.xlsx','Sheet',1);
    % Read test data as a timetable (Sheet 2)
    opts = detectImportOptions("Data.xlsx","Sheet",2);
    opts.VariableNames = ["Time", "Voltage"];
    opts = setvartype(opts,["duration","double"]);
    opts = setvaropts(opts,"Time","InputFormat",'hh:mm:ss.SSS');
    test = readtimetable('Data.xlsx',opts,"Sheet",2);
    % Bin edges must be in ascending order for discretize
    comp = sortrows(comp,"OCV","ascend");
    % Need one more edge than values, so added 0, since your values appear to apply to the range below it
    test.Percent = discretize(test.Voltage,[0;comp.OCV],comp.SOC)
    test = 10267x2 timetable
    Time Voltage Percent ____________ _______ _______ 00:00:00.000 3.1005 50 00:01:00.000 3.248 55 00:02:00.000 3.3265 60 00:03:00.000 3.3866 60 00:04:00.000 3.4343 65 00:05:00.000 3.4728 65 00:06:00.000 3.4976 65 00:07:00.000 3.5047 70 00:08:00.000 3.5097 70 00:09:00.000 3.515 70 00:10:00.000 3.5202 70 00:11:00.000 3.5252 70 00:12:00.000 3.5308 70 00:13:00.000 3.536 70 00:14:00.000 3.5416 70 00:15:00.000 3.5478 70