使用变量作为循环间隔进行迭代

时间:2017-02-12 18:11:30

标签: matlab

我有以下变量:

framespan = '83:89'; %type is char

我希望有一个看起来像:

for i = framespan
%code
end

我不是在寻找具有特定结构的'for'循环,我只想迭代该间隔。

基本上我有一个大文件,我从哪里得到framespan,问题是我只能把它作为char,因为我从XML文件中得到它。

如何在Matlab中实现这一目标?

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您想安全地执行此操作,并且 希望安全地执行此操作,则应自行解析char数组(使用strsplitsplit之类的内容较新的MATLABs):

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的内容中,它会很乐意为你执行恶意代码。这就是为什么我非常强烈建议你自己解析字符串,考虑到你已经定义得很好的格式。