Matlab - 将值减 1 直到没有错误

Matlab - Reduce value by 1 until no error

我使用同一个程序分析包含不同列数的数据文件。

每个数据文件需要不同的条件才能使 reshape 功能成功运行。我有以下完美运行的代码。简而言之,如果重塑不成功,它将 raw = raw(:,1,x); 中的 x 减去 1 并尝试重塑,如果仍然无法重塑,它会再次尝试,依此类推。

有没有办法重写这段代码以使其不那么乏味?

[~, ~, raw] = xlsread(test_filename,test_sheetname);

    try raw = raw(:,1:17); d = reshape([raw{:}],size(raw)); catch 
    try raw = raw(:,1:16); d = reshape([raw{:}],size(raw));catch
    try raw = raw(:,1:15); d = reshape([raw{:}],size(raw));catch
    try raw = raw(:,1:14); d = reshape([raw{:}],size(raw));catch
    try raw = raw(:,1:13); d = reshape([raw{:}],size(raw));catch
    try raw = raw(:,1:12); d = reshape([raw{:}],size(raw));catch
    try raw = raw(:,1:11); d = reshape([raw{:}],size(raw));catch 
    end
    end
    end
    end
    end  
    end   
    end

如评论中所述,此问题需要澄清。但是,您可以使用 for 循环来避免嵌套 try/catch 语句:

for x = 17:-1:11
  try
    raw = raw(:,1:x); 
    d = reshape([raw{:}],size(raw)); 
    break;
  catch
  end
end