Octave 中的交易功能不起作用
deal function in Octave not working
我有一个 .m 文件,它是在 Matlab 中 运行 时编写(并且有效)的,但是当我在 Octave 中转到 运行 时,我得到一个错误。我知道这两个程序有它们的区别,我只是不太清楚如何重写有问题的代码行以使其工作。
这是代码。最后一行是导致问题的那一行:
dirr = '/my/file/path/'
foldlist = dir([dirr '*.wav']);
foldname={};
[foldname{1:length(foldlist),1}] = deal(foldlist.name)
这是 运行 时出现的错误:
error: Invalid call to deal. Correct usage is:
-- Function File: [R1, R2, ..., RN] = deal (A)
-- Function File: [R1, R2, ..., RN] = deal (A1, A2, ..., AN)
看起来很简单,给了错误解释,就是不知道怎么重写了
你应该可以做到这一点:
foldname={foldlist.name};
这也是 MATLAB 中更好的方法。
foldlist.name
是逗号分隔的值列表。通过在其周围放置大括号将它们捕获在元胞数组中。相当于{a,b,c}
.
原代码的问题在于,初始化foldname={}
后,索引foldname{1:length(foldlist),1}
是非法的。当索引超出赋值左侧的边界时,MATLAB 倾向于添加空单元格。 Octave 也是,但是索引数组周围有方括号,Octave 似乎没有以相同的方式解析这个特定位。
我有一个 .m 文件,它是在 Matlab 中 运行 时编写(并且有效)的,但是当我在 Octave 中转到 运行 时,我得到一个错误。我知道这两个程序有它们的区别,我只是不太清楚如何重写有问题的代码行以使其工作。
这是代码。最后一行是导致问题的那一行:
dirr = '/my/file/path/'
foldlist = dir([dirr '*.wav']);
foldname={};
[foldname{1:length(foldlist),1}] = deal(foldlist.name)
这是 运行 时出现的错误:
error: Invalid call to deal. Correct usage is:
-- Function File: [R1, R2, ..., RN] = deal (A)
-- Function File: [R1, R2, ..., RN] = deal (A1, A2, ..., AN)
看起来很简单,给了错误解释,就是不知道怎么重写了
你应该可以做到这一点:
foldname={foldlist.name};
这也是 MATLAB 中更好的方法。
foldlist.name
是逗号分隔的值列表。通过在其周围放置大括号将它们捕获在元胞数组中。相当于{a,b,c}
.
原代码的问题在于,初始化foldname={}
后,索引foldname{1:length(foldlist),1}
是非法的。当索引超出赋值左侧的边界时,MATLAB 倾向于添加空单元格。 Octave 也是,但是索引数组周围有方括号,Octave 似乎没有以相同的方式解析这个特定位。