Octave 模糊逻辑工具箱在倍频程中的安装问题

Octave 模糊逻辑工具箱在倍频程中的安装问题,octave,Octave,我正在尝试使用以下comand在Octave 5.1.0中安装Fuzzy logic toolkit包: pkg install -forge fuzzy-logic-toolkit -verbose 并试图通过 pkg install fuzzy-logic-toolkit-0.4.5.tar.gz 但倍频程始终返回以下代码: parse error near line 165 of file /home/leo/octave/fuzzy-logic-toolkit-0.4.5/defu

我正在尝试使用以下comand在Octave 5.1.0中安装Fuzzy logic toolkit包:

pkg install -forge fuzzy-logic-toolkit -verbose 
并试图通过

pkg install fuzzy-logic-toolkit-0.4.5.tar.gz
但倍频程始终返回以下代码:

parse error near line 165 of file /home/leo/octave/fuzzy-logic-toolkit-0.4.5/defuzz.m

  anonymous function bodies must be single expressions

>>>   y_val = @(y_val) if (y_val == max_y) 1 else 0 endif;
                        ^

error: called from
    doc_cache_create>create_cache at line 109 column 20
    gen_doc_cache_in_dir>@<anonymous> at line 143 column 16
    doc_cache_create>gen_doc_cache_in_dir at line 144 column 9
    doc_cache_create at line 55 column 12
    install>generate_lookfor_cache at line 794 column 5
    install at line 223 column 7
    pkg at line 441 column 9
>> warning: load_path: /home/leo/octave/fuzzy-logic-toolkit-0.4.5: Arquivo ou diretório inexistente
warning: load-path: update failed for '/home/leo/octave/fuzzy-logic-toolkit-0.4.5', removing from path
warning: load_path: /home/leo/octave/fuzzy-logic-toolkit-0.4.5: Arquivo ou diretório inexistente
warning: load-path: update failed for '/home/leo/octave/fuzzy-logic-toolkit-0.4.5', removing from path
warning: load_path: /home/leo/octave/fuzzy-logic-toolkit-0.4.5: Arquivo ou diretório inexistente
warning: load-path: update failed for '/home/leo/octave/fuzzy-logic-toolkit-0.4.5', removing from path

文件/home/leo/octave/fuzzy-logic-toolkit-0.4.5/defuzzz.m第165行附近的解析错误
匿名函数体必须是单个表达式
>>>y_val=@(y_val)如果(y_val==max_y)1,否则0 endif;
^
错误:从调用
文档缓存创建>在第109行第20列创建缓存
gen_doc_cache_in_dir>@第143行第16列
文档缓存创建>第144行第9列的生成文档缓存目录
在第55行第12列创建文档
在第794行第5列处安装>生成查找缓存
安装在第223行第7列
第441行第9列包装
>>警告:加载路径:/home/leo/octave/fuzzy-logic-toolkit-0.4.5:Arquivo ou diretório rio不存在
警告:加载路径:更新“/home/leo/octave/fuzzy-logic-toolkit-0.4.5”失败,正在从路径中删除
警告:加载路径:/home/leo/octave/fuzzy-logic-toolkit-0.4.5:Arquivo ou diretório rio不存在
警告:加载路径:更新“/home/leo/octave/fuzzy-logic-toolkit-0.4.5”失败,正在从路径中删除
警告:加载路径:/home/leo/octave/fuzzy-logic-toolkit-0.4.5:Arquivo ou diretório rio不存在
警告:加载路径:更新“/home/leo/octave/fuzzy-logic-toolkit-0.4.5”失败,正在从路径中删除

我能做些什么来解决这个问题?我在版本4(安装在Ubuntu的
apt install octave
中)中也遇到了同样的问题模糊逻辑软件包从2014年起就没有更新过,所以最后一个版本没有使用octave 5.x构建

两种可能性:

1) 您使用最新的Mercurial代码并从中构建

hg clone http://hg.code.sf.net/p/octave/fuzzy-logic-toolkit octave-fuzzy-logic-toolkit
cd octave-fuzzy-logic-toolkit/
hg archive ../fuzzy-logic-toolkit-0.4.5.tar.gz -X ".hg*"
cd ..
octave-cli
pkg install fuzzy-logic-toolkit-0.4.5.tar.gz
wget ftp://ftp-stud.hs-esslingen.de/pub/Mirrors/sources.redhat.com/cygwin/noarch/release/octave-fuzzy-logic-toolkit/octave-fuzzy-logic-toolkit-0.4.6-0.2-src.tar.xz
tar -xf octave-fuzzy-logic-toolkit-0.4.6-0.2-src.tar.xz
octave-cli
pkg install octave-fuzzy-logic-toolkit-0.4.6-0.2.src/fuzzy-logic-toolkit-hg-0.4.6.tar.bz2
2) 从其他源代码(例如Cygwin源代码包)下载mercurial代码并从中构建

hg clone http://hg.code.sf.net/p/octave/fuzzy-logic-toolkit octave-fuzzy-logic-toolkit
cd octave-fuzzy-logic-toolkit/
hg archive ../fuzzy-logic-toolkit-0.4.5.tar.gz -X ".hg*"
cd ..
octave-cli
pkg install fuzzy-logic-toolkit-0.4.5.tar.gz
wget ftp://ftp-stud.hs-esslingen.de/pub/Mirrors/sources.redhat.com/cygwin/noarch/release/octave-fuzzy-logic-toolkit/octave-fuzzy-logic-toolkit-0.4.6-0.2-src.tar.xz
tar -xf octave-fuzzy-logic-toolkit-0.4.6-0.2-src.tar.xz
octave-cli
pkg install octave-fuzzy-logic-toolkit-0.4.6-0.2.src/fuzzy-logic-toolkit-hg-0.4.6.tar.bz2

这是一个非常奇怪的代码添加。似乎有人想编写python代码来解决倍频程问题。Octave不支持三元运算符,更不用说python语法了。在任何情况下,如果您愿意重新打包工具包,只需使用正常的if块将该行转换为适当的本地函数,而不是匿名函数,就可以了(假设没有其他错误)。或者,您可以尝试一些丑陋的等效单行代码,如
y_val=@(y)[0,1]((y==max_y)+1)
或其他任何东西。从我看到的情况来看,这行代码在存储库中似乎是固定的。。。不知道为什么下载的版本不包含它。您可以从存储库I下载更新版本guess@TasosPapastylianou我解决了这个问题。我在我的
/home/octave
中创建了一个带有模糊逻辑工具箱名称的文件夹,并将octave GUI指向该文件夹,并制作了一个侧面加载程序。那就是跑步。。。提前谢谢。@Seamus啊,太棒了,我发现你已经在跟踪器上打开了一个bug报告:)我也在那里留下了一条评论,希望维护人员能尽快以打包的形式发布修复程序。同时,如果您需要安装fuzzy logic toolkit,您可以尝试按照下面matzeri的回答安装开发版本。如果你在这方面有困难,我很乐意帮助你(在这里打开一个关于堆栈溢出的新问题)。@Seamus考虑到倍频程项目的规模和高质量,有时很容易忽略这是一个志愿者项目,由少数无薪志愿者维持,这些志愿者大多在日常工作剩余的任何业余时间从事这项工作。这里发生的事情可能很简单,因为维护人员在修复错误后忘记发布包。这是常有的事。和其他自由软件一样,它的质量依赖于美国用户和维护者。因此,你很好地引起了项目的注意,但除此之外,我不认为就这一问题进行辩论是有建设性的:)2号非常有趣。。。你是怎么找到那个链接的?甚至工具包的官方出版物也没有提到除了官方八度音阶镜以外的任何东西。。。(我并没有在duckduckgo上发现任何明显的东西)内部工作;-)。我知道我的cygwin源程序包的内容。一般来说,所有Cygwin源代码包都包含原始源代码和补丁,对于Octave forge,我使用了Mercurial代码。谢谢你所做的一切。它似乎起了作用(除非从今天早些时候开始更新该软件包)。但我不禁怀疑:
mercurial已经死了
根据报告()。。。这就是倍频程维护者所依赖的吗?