Octave中的交易功能不起作用

时间:2018-05-03 00:26:11

标签: matlab 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)

看起来很简单,鉴于错误解释,我只是不知道如何重写它。

1 个答案:

答案 0 :(得分:5)

你应该可以这样做:

ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

这也是MATLAB中更好的方法。

foldname={foldlist.name}; 是以逗号分隔的值列表。通过在其周围放置花括号,将它们捕获在单元阵列中。相当于foldlist.name

原始代码的问题在于,在初始化{a,b,c}之后,索引foldname={}是非法的。当索引超出赋值左侧的边界时,MATLAB倾向于添加空单元格。 Octave也是如此,但是索引数组周围有方括号,似乎Octave没有以相同的方式解析这个特定的位。