我有以下变量:
framespan = '83:89'; %type is char
我想要一个看起来像这样的:
for i = framespan
%code
end
我并不是在寻找具有特定结构的“ for”循环,我只想在该间隔内进行迭代。
基本上,我有一个很大的文件,从那里我可以得到帧跨度,问题是我只能以char形式获得它,因为我是从XML文件中获得的。
如何在Matlab中实现这一目标?
谢谢!
如果您想安全地进行操作,并且应该安全地进行操作,则应该自己解析char数组(使用类似strsplit
或split
使用较新的MATLAB的方法):
framespan = '83:89'; %type is char
nums = strsplit(framespan,':');
% TODO: handle problematic inputs
from = str2double(nums{1});
to = str2double(nums{2});
for k=from:to
...
end
我提到安全性的原因是,直接/天真的方法是使用str2num
,它可以将字符串直接转换为范围。但这就是问题所在:文档指出它eval
在幕后使用,并且它将很乐意为您执行恶意代码,以防万一有人可以将恶意代码注入您所阅读的内容中framespan
。这就是为什么我强烈建议您自己解析字符串的原因,要考虑到您定义的格式非常明确。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句