foreach loop with strings in Matlab

前端 未结 3 1937
盖世英雄少女心
盖世英雄少女心 2021-02-20 17:43

I want to create a loop that will iterate over several strings, but unable to do so in Matlab.

What works is:

for i=1:3
  if (i==1)
    b=\'cow\';
  else         


        
3条回答
  •  走了就别回头了
    2021-02-20 18:24

    Your problems are probably caused by the way MATLAB handles strings. MATLAB strings are just arrays of characters. When you call ['cow','dog','cat'], you are forming 'cowdogcat' because [] concatenates arrays without any nesting. If you want nesting behaviour you can use cell arrays which are built using {}. for iterates over the columns of its right hand side. This means you can use the idiom you mentioned above; Oli provided a solution already. This idiom is also a good way to showcase the difference between normal and cell arrays.

    %Cell array providing the correct solution
    for word = {'cow','dog','cat'}
        disp(word{1}) %word is bound to a 1x1 cell array. This extracts its contents.
    end
    
    cow
    dog
    cat
    
    
    %Normal array providing weirdness
    for word = ['cow','dog','cat'] %Same as word = 'cowdogcat'
        disp(word) %No need to extract content
    end
    
    c
    o
    w
    d
    o
    g
    c
    a
    t
    

提交回复
热议问题