【问题标题】:A different statement for each for-loop iteration每次 for 循环迭代的不同语句
【发布时间】:2024-10-06 07:05:01
【问题描述】:

我想为 for 循环的每次迭代打印不同的语句。我尝试将每个语句分配给一个变量,将每个变量放在一个向量中,并为每次迭代调用向量的不同索引,如下所示:

A = 1st statement
B = 2nd statement
C = 3rd statement

v = [A,B,C]

for i = 1:3
    fprintf('%s',v(i))
end

但它每次迭代只打印第一个语句一个字母。有什么更好的方法来做到这一点?

【问题讨论】:

    标签: matlab for-loop vector printf


    【解决方案1】:

    1xn 数组中,将存储n 字母。这就是为什么您会看到前三个字母被打印出来 (i=1:3)。假设所有语句的长度不同,您可以将A,B,C 保存在一个元胞数组中。然后像往常一样访问它。

    v={A;B;C};
    for i = 1:size(v,1) %always try to use size(v,1) instead of hard-coding.
       fprintf('%s',v{i,1})
    end
    

    如果所有语句的长度相同,那么您将它们放在一个矩阵中。

    v=[A;B;C];
    for i = 1:size(v,1) %always try to use size(v,1) instead of hard-coding.
       fprintf('%s',v(i,:))
    end
    

    【讨论】:

      【解决方案2】:

      您可以使用以下...

      A = '1st statement'
      B = '2nd statement'
      C = '3rd statement'
      
      v = {A;B;C}
      
      for i = 1:3
          fprintf('%s ',v{i,1}))
      end
      

      注意{;;;}的使用(元胞数组...http://uk.mathworks.com/help/matlab/cell-arrays.html

      而不是[,,,](矩阵...http://uk.mathworks.com/help/matlab/learn_matlab/matrices-and-arrays.html)。

      【讨论】:

      • 正如@Parag 提到的,硬编码数组的大小是一个不好的习惯,除非你希望有特定数量的元素!!
      最近更新 更多