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
我使用同一个程序分析包含不同列数的数据文件。
每个数据文件需要不同的条件才能使 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