Matlab:我如何读取变量的值(字符串或数字)?

时间:2016-12-01 09:18:35

标签: matlab

也许问题很奇怪,但无论如何...... 如何读取变量 number_of_plots 颜色的值(字符串或数字)? (我想使用变量/数组图选项来解决这个问题)

我的代码:

diagramoptions = []; 
wholecontent = fileread('aaa.txt') 
sections = regexp(wholecontent, '\*+([^*]+)\*+([^*]+)', 'tokens') 
for section = sections 
   switch(strtrim(section{1}{1})) 
         case 'Diagram Options' %Diagram Options -> siehe meine Gliederung im .txt file 
            keyvalues = regexp(section{1}{2}, '([^\n\r=]+)=([^\n\r=]+)', 'tokens')%\n -> new line; \r carriage return 
            diagramoptions = cell2table(vertcat(keyvalues{:}), 'VariableNames', {'Key', 'Value'}) 
        otherwise 
            warning('Unknown section: %s', section{1}{1}) 
     end 
  end 
openvar diagramoptions

我的输入" aaa.txt":

******************* Diagram Options****************
number_of_plots=4
header=Number of cycles
color=red
xlabel= RPM
ylabel= degree

2 个答案:

答案 0 :(得分:1)

这是一种天真的做法......它不能很好地扩展,并且它做了不必要的工作..但它是你需要建立的东西。

fileId = fopen('test.txt');
c = textscan(fileId, '%s', 'Delimiter', '=');
fclose(fileId);

for i = 1: length(c{1,1})
    if (strcmp(c{1,1}{i,1}, 'number_of_plots'))
        number_of_plots = c{1,1}{i+1,1};
    elseif strcmp(c{1,1}{i,1}, 'color')
        color = c{1,1}{i+1,1};
    end
end

因此,阅读文件并在=分隔即可让您知道任何匹配,例如number_of_plots位于下一行。所以只需循环然后挑出来。

答案 1 :(得分:0)

您可以使用函数.select2-container--open { right: 0 !important; left: auto !important; } 来运行.txt文件,因为它是.m文件:

eval

但在这种情况下,您需要在aaa.txt中添加一些引号,以便matlab可以创建变量:

fid = fopen('aaa.txt') %open the file

tline = fgetl(fid); %read the first line
while ischar(tline)
if ~isempty(strfind('tline','number_of_plots')) | ~isempty(strfind('tline','color='))
        try  %if it's possible matlab execute this line
        eval(tline)
        end
end
    tline = fgetl(fid); %read the next line
end

fclose(fid)