Matlab-将值减少1,直到没有错误
我使用同一个程序分析包含不同列数的数据文件 每个数据文件都需要不同的条件才能使Matlab-将值减少1,直到没有错误,matlab,reshape,mesh,contour,Matlab,Reshape,Mesh,Contour,我使用同一个程序分析包含不同列数的数据文件 每个数据文件都需要不同的条件才能使重塑功能成功工作。我有下面的代码,它可以完美地工作。简单地说,如果整形不成功,则在raw=raw(:,1,x)中从x中减去1并尝试重塑,如果仍然无法重塑,则会再次尝试,以此类推 有没有办法重写这段代码,让它不那么乏味 [~, ~, raw] = xlsread(test_filename,test_sheetname); try raw = raw(:,1:17); d = reshape([raw{:}],
重塑
功能成功工作。我有下面的代码,它可以完美地工作。简单地说,如果整形不成功,则在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
原始代码中有什么?请随机提供一些示例数据,以便我们更好地理解问题。我不明白你的重塑声明应该怎么做。如果所有单元格元素都有标量,它将始终有效;如果任何单元格有多个值,它将永远不起作用,除非另一个单元格为空。这些数据是如何生成的?为什么是细胞阵列?为什么可以删除部分数据?谢谢你的评论,我做了一些更改来解决你的问题。这仍然没有意义。请创建一个小示例
raw
,供您分享。您是否正在删除包含空单元格的列?还是用文字?这些事情中的任何一件都可以比像你一样反复尝试更容易、更有效地完成。像这样使用try/catch,或者像在答案中那样在循环中使用try/catch,这是一个非常糟糕的设计。