我有以下变量:
framespan = '83:89'; %type is char
我希望有一个看起来像:
for i = framespan
%code
end
我不是在寻找具有特定结构的'for'循环,我只想迭代该间隔。
基本上我有一个大文件,我从哪里得到framespan,问题是我只能把它作为char,因为我从XML文件中得到它。
如何在Matlab中实现这一目标?
谢谢!
答案 0 :(得分:2)
如果您想安全地执行此操作,并且 希望安全地执行此操作,则应自行解析char数组(使用strsplit
或split
之类的内容较新的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
的内容中,它会很乐意为你执行恶意代码。这就是为什么我非常强烈建议你自己解析字符串,考虑到你已经定义得很好的格式。