Matlab: выберите имя переменной и найдите соответствующее значение - PullRequest
0 голосов
/ 14 апреля 2020

Может кто-нибудь объяснить мне, как я получаю некоторые конкретные c значения после знака =? Входной файл имеет формат файла .subvar. Я не знаю, как прыгнуть в правой строке и столбце, чтобы получить значение. У вас есть ссылка на учебник по Matlab для такой проблемы.

Мне нужны, например, два указанных c значения (после знака =): значения $ _Wk1_lr_m и $ _Wk1_voll_m

!file.version=1.543! 
! Testautomatisch 

subvargroup.begin ($G_Wk1)   
  subvar(      $_Wk1_lr_C_x,                                   str = ' 0.019 ' ) 
  subvar(      $_Wk1_lr_m,                                     str = ' 15601 ' )               ! [kg] lr  
  subvar(      $_Wk1_lr_C_y,                                   str = '-0.007 ' ) 
  subvar(      $_Wk1_lr_C_z,                                   str = ' 1.644 ' ) 
  subvar(      $_Wk1_voll_m,                                   str = ' 33690 ' )               ! [kg] voll 
subvargroup.end   ($G_Wk1)

enter image description here

Каковы первые шаги, чтобы получить правильный ряд и правильный столбец? Спасибо и оставайтесь дома :)

1 Ответ

0 голосов
/ 14 апреля 2020

читать файл построчно, сопоставлять формат строки и извлекать значения с помощью регулярного выражения regexp

fid=fopen('mydata.subvars','rt');
res=struct;
while(~feof(fid))
  line=fgetl(fid);
  if(regexp(line,'^\s*subvar\(','once'))
     val=regexp(line,'\$_(\w+),\s*str\s*=\s*''\s*([0-9.-]+)\s*','tokens');
     if(length([val{:}])==2)
        res.(val{1}{1})=str2num(val{1}{2});
     end
  end
end
fclose(fid);

вот результат

>> res

res = 

    Wk1_lr_C_x: 0.0190
      Wk1_lr_m: 15601
    Wk1_lr_C_y: -0.0070
    Wk1_lr_C_z: 1.6440
    Wk1_voll_m: 33690
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...