我有一个.m文件在Matlab中运行时编写(和工作),但是当我在Octave中运行它时,我收到一个错误.我知道这两个程序有不同之处,我只是不知道如何重新编写有问题的代码行以使其工作.
这是代码.最后一行是导致问题的那一行:
dirr = '/my/file/path/'
foldlist = dir([dirr '*.wav']);
foldname={};
[foldname{1:length(foldlist),1}] = deal(foldlist.name)
Run Code Online (Sandbox Code Playgroud)
这是运行时出现的错误:
error: Invalid call to deal. Correct usage is:
-- Function File: [R1, R2, ..., RN] = deal (A)
-- Function File: [R1, R2, ..., RN] = deal (A1, A2, ..., AN)
Run Code Online (Sandbox Code Playgroud)
看起来很简单,给出错误解释,我只是不知道如何重写它.
你应该能够做到这一点:
foldname={foldlist.name};
Run Code Online (Sandbox Code Playgroud)
这也是MATLAB中更好的方法.
foldlist.name是以逗号分隔的值列表.通过在其周围放置花括号,将它们捕获在单元阵列中.相当于{a,b,c}.
原始代码的问题在于,在初始化之后foldname={},索引foldname{1:length(foldlist),1}是非法的.当索引超出赋值左侧的边界时,MATLAB倾向于添加空单元格.Octave也是这样,但是索引数组周围有方括号,似乎Octave没有以相同的方式解析这个特定的位.
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |