我之前从未使用Octave(我使用过Matlab),但我安装了GNU Octave,因为我想使用GNU Octave中编写的一个存储库/包 . 该存储库包含扩展名为 .csl
的文件,这些文件在 .m
文件(主脚本)中调用,没有扩展名 . 例如,名为 foo.csl
的文件在主脚本中被调用为函数 foo()
. 但是,当我运行主脚本( .m
文件将 .csl
文件作为函数调用)时,它会抛出一个错误,指出函数 foo()
未定义 . 文件 foo.csl
开头如下:
class foo
% Definition about the class foo
public x
public y
public z
我搜索了与GNU Octave相关的 .csl
文件扩展名,但我找不到任何有用的东西 . 我在Windows 10上使用最新版本的GNU Octave .
1 回答
我看过你的文件了 .
坏消息是,正如我在评论中所说,
.csl
文件不是有效的matlab / octave代码 . 这让我相信可能会发生以下情况之一:.csl
文件在其他地方是"processed"以生成实际的matlab / octave兼容类.csl
文件只是一个伪代码"specification",而实际的matlab / octave类是在别处提供的,你以某种方式加载它''re supposed to ' .这是作业的一部分,无论谁给你这个代码,都希望将
.csl
文件转换成适当的matlab / octave代码 .谁写了这个不知道matlab,这只是简单错误的代码 .
好消息是,这很容易转化为工作代码 . 由于您所需的
RecDomain
"class"本质上是一个只有公共字段而没有方法的简单类,因此它可以直接替换为简单的struct
. 这意味着您可以使用以下内容替换整个RecDomain.csl
文件:然后你的
model1.m
脚本将按原样运行 .PS . (显然上面的内容过于简单,没有输入检查/断言等,但你得到了图片) .
如果这是一个人为的简单示例,并且您的实际
.csl
文件更复杂,那么您必须根据.csl
"specification"将它们转换为正确的八度音程类,这超出了本答案的范围 . Octave为the new matlab object-oriented style using the classdef keyword提供了一些有限的支持,如果您想尝试,但大多数情况下八度音程使用matlab's old (pre-2008) style实现面向对象 . 请参阅此处查看相应的官方文档条目:[matlab (new syntax)] / [octave (old syntax)]