Борьба с функцией Matlab cell2dataset

Я пытаюсь преобразовать "ячейку" в "набор данных", но безуспешно. Я не понимаю, что происходит и почему наиболее очевидна функция Matlab cell2dataset не работает. Может быть, кто-то может объяснить и помочь мне заставить это работать...

Я загружаю свои входные данные из файла CSV следующим образом:

clc; clear all

filename = '/home/nlv12097/WORK/SSTA_FLOW/CADENV/work/tempus/exp2.ssta2spice/sta_ssta_spectre0/STA_timing.path_output_retime_setup_ssta_full.csv';
fid = fopen(filename); DATA = textscan(fid,'%s%f32%f32%f32%f32%s%f32%s%s%s','delimiter',',','HeaderLines',1); fclose(fid);

DATA
class(DATA)

Таким образом, входные данные выглядят так:

DATA = 

    {9x1 cell}    [9x1 single]    [9x1 single]    [9x1 single]    [9x1 single]    {9x1 cell}    [9x1 single]    {9x1 cell}    {9x1 cell}    {9x1 cell}


ans =

cell

Здесь важно отметить, что DATA классифицируется как "ячейка", поэтому, если я хочу сделать из него "набор данных" cell2dataset кажется подходящей функцией. Правильно?

DATASET1 = cell2dataset(DATA,'VarNames',{'VAR1','VAR2','VAR3','VAR4','VAR5','VAR6','VAR7','VAR8','VAR9','VAR10'})

дает следующий результат:

DATASET1 = 

    VAR1              VAR2                VAR3                VAR4                VAR5                VAR6              VAR7                VAR8          
    {9x1 cell}        [9x1 single]        [9x1 single]        [9x1 single]        [9x1 single]        {9x1 cell}        [9x1 single]        {9x1 cell}    


    VAR9              VAR10         
    {9x1 cell}        {9x1 cell}    

Это не совсем то, что я ожидал увидеть. На самом деле, я хочу, чтобы мой набор данных выглядел как примеры из документации Matlab.

Кстати, если я сделаю следующее:

DATASET2 = mat2dataset(DATA{1},'VarNames',{'VAR1'});
DATASET2 = horzcat(DATASET2,mat2dataset(DATA{2},'VarNames',{'VAR2'}));
DATASET2 = horzcat(DATASET2,mat2dataset(DATA{3},'VarNames',{'VAR3'}));
DATASET2 = horzcat(DATASET2,mat2dataset(DATA{4},'VarNames',{'VAR4'}));
DATASET2 = horzcat(DATASET2,mat2dataset(DATA{5},'VarNames',{'VAR5'}));
DATASET2 = horzcat(DATASET2,mat2dataset(DATA{6},'VarNames',{'VAR6'}));
DATASET2 = horzcat(DATASET2,mat2dataset(DATA{7},'VarNames',{'VAR7'}));
DATASET2 = horzcat(DATASET2,mat2dataset(DATA{8},'VarNames',{'VAR8'}));
DATASET2 = horzcat(DATASET2,mat2dataset(DATA{9},'VarNames',{'VAR9'}));
DATASET2 = horzcat(DATASET2,mat2dataset(DATA{10},'VarNames',{'VAR10'}))

результат в соответствии с моими ожиданиями.

DATASET2 = 

    VAR1               VAR2    VAR3     VAR4    VAR5      VAR6                     VAR7    VAR8                        VAR9                   
    'path4_spi'        57.2    258.2    55.2    3697.3    '89.954 | 40.539'        5000    '3697.299 | 321.456'        '4965.247 | 25.811'    
    'path9_spi'        57.2    258.2      54    3418.8    '90.849 | 40.535'        5000    '3418.800 | 303.210'        '4963.150 | 25.804'    
    'path7_spi'        57.2    258.2    54.2    3483.7    '89.849 | 40.535'        5000    '3483.699 | 309.051'        '4964.351 | 25.804'    
    'path2_spi'        57.2    258.2    55.4    3842.5    '90.758 | 40.554'        5000    '3842.499 | 327.933'        '4964.643 | 25.817'    
    'path8_spi'        57.2    258.2    52.9    3425.2    '89.887 | 40.501'        5000    '3425.200 | 304.215'        '4963.013 | 25.786'    
    'path6_spi'        57.2    258.2    54.4    3629.9    '89.649 | 40.535'        5000    '3629.900 | 316.270'        '4964.750 | 25.804'    
    'path1_spi'        57.2    258.2    55.4    3969.9    '89.658 | 40.554'        5000    '3969.899 | 333.525'        '4965.742 | 25.817'    
    'path3_spi'        57.2    258.2    55.3    3820.1    '89.358 | 40.554'        5000    '3820.100 | 326.701'        '4965.942 | 25.817'    
    'path5_spi'        57.2    258.2    52.7    3623.9    '89.533 | 40.497'        5000    '3623.899 | 316.809'        '4963.167 | 25.780'    


    VAR10                   
    '1267.947 | 322.681'    
    '1544.351 | 304.491'    
    '1480.652 | 310.312'    
    '1122.143 | 329.143'    
    '1537.813 | 305.491'    
    '1334.850 | 317.512'    
    '995.843 | 334.723'     
    '1145.842 | 327.914'    
    '1339.268 | 318.047'    

Но мне не нравится этот подход, потому что он включает в себя строки кода. Так что я застрял здесь. Я не знаю как пользоваться cell2dataset правильно, и мне нужна помощь с этим.

Q1: Кто-нибудь хочет объяснить, почему DATASET1 и DATASET2 различаются?

Q2: И самое главное, как получить результат DATASET2, используя cell2dataset функционировать?

1 ответ

Я прошу прощения за то, что задал глупый вопрос.

После прочтения дополнительной документации Matlab я нашел гораздо лучшее решение. Фактически, возможно создать набор данных непосредственно из входного файла.

DATASET3 = dataset('File','/home/nlv12097/WORK/SSTA_FLOW/CADENV/work/tempus/exp2.ssta2spice/sta_ssta_spectre0/STA_timing.path_output_retime_setup_ssta_full.csv','Delimiter',',')

DATASET3 = 

Path_Name          LaunchFF_CPpin_Time    LaunchFF_Qpin_Time    CaptureFF_CPpin_Time    CaptureFF_Dpin_Time    CaptureFF_Response_Time    Phase_Shift
'path4_spi'        57.2                   258.2                 55.2                    3697.3                 '89.954 | 40.539'          5000       
'path9_spi'        57.2                   258.2                   54                    3418.8                 '90.849 | 40.535'          5000       
'path7_spi'        57.2                   258.2                 54.2                    3483.7                 '89.849 | 40.535'          5000       
'path2_spi'        57.2                   258.2                 55.4                    3842.5                 '90.758 | 40.554'          5000       
'path8_spi'        57.2                   258.2                 52.9                    3425.2                 '89.887 | 40.501'          5000       
'path6_spi'        57.2                   258.2                 54.4                    3629.9                 '89.649 | 40.535'          5000       
'path1_spi'        57.2                   258.2                 55.4                    3969.9                 '89.658 | 40.554'          5000       
'path3_spi'        57.2                   258.2                 55.3                    3820.1                 '89.358 | 40.554'          5000       
'path5_spi'        57.2                   258.2                 52.7                    3623.9                 '89.533 | 40.497'          5000       


Arrival_Time                Required_Time              Slack_Time              
'3697.299 | 321.456'        '4965.247 | 25.811'        '1267.947 | 322.681'    
'3418.800 | 303.210'        '4963.150 | 25.804'        '1544.351 | 304.491'    
'3483.699 | 309.051'        '4964.351 | 25.804'        '1480.652 | 310.312'    
'3842.499 | 327.933'        '4964.643 | 25.817'        '1122.143 | 329.143'    
'3425.200 | 304.215'        '4963.013 | 25.786'        '1537.813 | 305.491'    
'3629.900 | 316.270'        '4964.750 | 25.804'        '1334.850 | 317.512'    
'3969.899 | 333.525'        '4965.742 | 25.817'        '995.843 | 334.723'     
'3820.100 | 326.701'        '4965.942 | 25.817'        '1145.842 | 327.914'    
'3623.899 | 316.809'        '4963.167 | 25.780'        '1339.268 | 318.047'    
Другие вопросы по тегам