matlab get the value of char

后端 未结 3 1975
面向向阳花
面向向阳花 2021-01-29 14:56

from MATLAB command line , when I type my variable a , it gives me values as expected :

a =


            value_1
            value_2

and I wou

相关标签:
3条回答
  • 2021-01-29 15:18

    How are you reading in the xml file? If you're using xmlread then MatLab adds a lot of white space in there for you and could be the cause of your problems.

    http://www.mathworks.com/matlabcentral/fileexchange/28518-xml2struct

    This will put your xml file into a struct where you should be able to access the elements in the array.

    0 讨论(0)
  • 2021-01-29 15:22

    You seem to have an somewhat inconvenient character array. You can convert this array in a more manageable form by doing something like what @Richante said:

    strings = strread(a, '%s', 'delimiter', sprintf('\n'));
    

    Then you can reference to toto and titi by

    >> b = strings{2}
    b = 
    toto
    
    >> c = strings{3}
    c = 
    titi
    

    Note that strings{1} is empty, since a starts with a newline character. Note also that you don't need a strtrim -- that is taken care of by strread already. You can circumvent the initial newlines by doing

    strings = strread(a(2:end), '%s', 'delimiter', sprintf('\n'));
    

    but I'd only do that if the first newline is consistently there for all cases. I'd much rather do

    strings = strread(a, '%s', 'delimiter', sprintf('\n'));
    strings = strings(~cellfun('isempty', strings))
    

    Finally, if you'd rather use textscan instead of strread, you need to do 1 extra step:

    strings = textscan(a, '%s', 'delimiter', sprintf('\n'));
    strings = [strings{1}(2:end)];
    
    0 讨论(0)
  • 2021-01-29 15:32

    Perhaps a is a string with a newline in it. To make two separate variables, try:

    values = strtrim(strread(a, '%s', 'delimiter', sprintf('\n')))
    

    strread will split a into separate lines, and strtrim will remove leading/trailing whitespace. Then you can access the lines using

    values{1}
    values{2}
    

    (note that you must use curly brackets since this is a cell array of strings).

    0 讨论(0)
提交回复
热议问题