MATLAB:仅对特定字符数组执行 "For-loop or IF-statement"

MATLAB: Perform "For-loop or IF-statement" only for specific character arrays

我有 60 个不同的字符数组(Book01、Book02、...、Book60)。 (例如 Book01 是一个 1x202040 字符)。我只想在 Book45 到 Book58 上做某个程序。

如何编写 IF 语句或 FOR 循环,以便仅对 Book45 到 Book58 字符数组执行该过程?例如:

Book05  % Inserted Array for test

if Book45|Book46|Book47|Book48|Book49|Book50|Book51|Book52|Book53|Book54|Book54|Book56|Book57|Book58 % If inserted array is Book45-58     
   % Procedure to be performed on "Inserted Array", only if Book45-58    
else
   % No Procedure on Book01-44 or Book59-60
end

谢谢

如评论中所述,最好将所有数组放在一个大数组中。如果你坚持调用一个特定的数组,你可以这样写:

 for ii=45:58
     a=eval(['Book' num2str(ii)]); % 
     % Procedure to be performed on a
 end

但我看到的每个地方都尽量避免eval...

我只是把评论放在一个答案中,所以我可以写一些代码。我昨天弄丢了我的matlab license,所以没法测试。

for i = 1:[largest book number]
    book = eval(['Book' num2str(i)]);
    if i >= 45 && i <= 58
        % procedure for book45 until and including book58
    else
        % procedure for other books
    end
end

恕我直言,不使用 eval 的唯一原因是它速度慢(并且可能容易出错),但在这种情况下这不是问题。 但是,您可以将所有书籍放在一个元胞数组中,然后删除 eval.

,而不是拥有所有这些单独的数组

编辑:但现在我读到您有“Book01-44 或 Book59-60 上没有程序”。如果 else 语句为空,则 dpdp 的答案完全足够。