我已经看过MATLAB: alternative of Octave's function 'source' (import m-file),但我似乎无法弄清楚以下是如何运作的。这是Matlab R2016b。
我正在查看M_files_chap12.zip,而在.zip中,有两个文件:
Lint/AmbiguousBlockAssociation:
Exclude:
- 'spec/**/*'
Include:
- 'spec/support/**/*'
- 'spec/factories/**/*'
- 'spec/rails_helper.rb'
- 'spec/spec_helper.rb'
可运行,并使用其他一些类WDFDiodeExample.m
,其中包含其他类以下是WDFClasses.m
:
WDFClasses.m
问题是,我似乎无法从此文件导入这些类。我尝试在% WDFclasses.m
% ....
%----------------------WDF Class------------------------
classdef WDF < hgsetget % the WDF element superclass
properties
PortRes % the WDF port resistance
end
methods
function Volts = Voltage(obj) % the voltage (V) over a WDF element
Volts = (obj.WU+obj.WD)/2; % as defined in the WDF literature
end
end;
end
%----------------------Adaptor Class------------------------
classdef Adaptor < WDF % the superclass for ser. and par. (3-port) adaptors
properties
KidLeft % a handle to the WDF element connected at the left port
KidRight % a handle to the WDF element connected at the right port
end;
end
...
开头添加以下每个语句:
WDFDiodeExample.m
...我收到了评论中写的错误。
似乎MATLAB想要仅一个每类m文件,并且它似乎无法识别打包在单个文件中的多个类 - 但是,为什么会作者选择这样写WDFClasses %this will run WDFClasses.m; but % Class name and filename do not agree.
eval(fileread('WDFClasses.m')) % Error: Illegal use of reserved keyword "classdef".
run('WDFClasses.m') % Class name and filename do not agree.
所以它直接无法使用?或者这在早期版本的MATLAB中是否可行,然后被禁用?
答案 0 :(得分:1)
事实证明,相关文献也提到了这一点:
必须注意的是,所有呈现的类都显示在a中 单个M文件的紧凑性虽然在实践中MATLAB要求每个类都驻留在一个 个人档案。换句话说,类......应该分成七个不同的文件 为了让模型在MATLAB中运行。
...所以我想,这就是它的工作方式......