【发布时间】:2021-07-06 10:15:11
【问题描述】:
我使用同一个程序分析包含不同列数的数据文件。
每个数据文件需要不同的条件才能使reshape 函数成功运行。我有以下代码可以完美运行。简而言之,如果 reshape 不成功,它会将 raw = raw(:,1,x); 中的 x 减 1 并尝试 reshape,如果仍然无法 reshape 则再次尝试等等。
是否可以重写这段代码以减少乏味?
[~, ~, 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
【问题讨论】:
-
raw中有什么内容?请制作一些随机示例数据,以便我们更好地理解问题。我不明白你的重塑声明应该做什么。如果所有单元格元素都有一个标量,它将始终有效,如果任何单元格具有多个值,它将永远不会工作,除非另一个单元格为空。这些数据是如何产生的?为什么是元胞数组?怎么把部分数据删掉就可以了? -
感谢您的 cmets,我做了一些更改来解决您的问题。
-
这仍然没有意义。请创建一个小例子
raw,您可以分享。你用空单元格切断列吗?还是用文字?与像您一样反复尝试相比,这些事情中的任何一个都可以更轻松有效地完成。像这样使用 try/catch 或在答案中使用循环只是一个非常糟糕的设计。
标签: matlab reshape mesh contour