相当简单的问题,但我无法通过Google或Stack找到答案。
我有一个用例,最好只从URL读取.m
MATLAB脚本。
我该如何正确地做到这一点?
答案 0 :(得分:2)
<disclaimer>
显然,只对您完全控制的文件执行此操作(和/或找到具有更好验证的解决方案)。这是一种“危险”的方法,因为没有检查您是否不打算运行一个文件,例如,将整个硬盘复制到Bob的计算机上,然后再破坏它。鲍勃和爱丽丝可能整晚都在嘲笑你尴尬的假日照片。
将此更多地视为概念证明而不是操作方法,它解决了您的问题,但绝不应该在生产代码中使用。
</disclaimer>
您需要使用eval
来评估代码。每当我提到eval
时,我都不得不指出it's not recommended,特别是在这种情况下,因为您可以评估网络上该文件中存在的随机代码!在这种情况下,您唯一的选择是在本地保存文件并调用run
。
然后你可以使用
eval(urlread('http://myscript.m'))
或者,由于不推荐urlread
(来自docs),您可以使用webread
并指定输出应为文字in the options
eval(webread('http://myscript.m', weboptions('ContentType', 'text')))
使用webread
似乎真的慢,不知道为什么它是推荐的功能。鉴于此,urlread
可能更可取。
webread
文档中有一条说明表明您甚至不需要指定weboptions
如果Web服务返回扩展名为.m的MATLAB®文件,则该函数将其内容作为字符向量返回。
虽然你建议webread
返回一个不起作用的uint8变量。
答案 1 :(得分:0)