微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Matlab中常量值和依赖参数的单独定义

如何解决Matlab中常量值和依赖参数的单独定义

在我的代码中,我有很多常量值和参数在我的代码中占据了很大的空间。

例如在 C++ 中,我会制作一个标头和一个单独的文件,我将这些参数定义为例如“const-type”,并与 main 或 other 共享标头。 cpp 文件

你如何在 MATLAB 中保持这种结构化,值得吗?

示例:Coefficients.m 如下所示:

classdef coefficients
    properties(Constant) 
        % NIST data
        A_N = 28.98641;
    end
end

一个文件Gas.m 我想使用 A_N 的地方如下所示:

function Gas()
  clear all
  clc
  
  import Coefficients.* % Does not work

  % A simple print
  Values.A_N        % Does not work
  coefficients.A_N  % Does not work
  Constant.A_N      % Does not work
end

解决方法

好的,假设类 coefficients 定义为:

classdef coefficients
    properties(Constant) 
        % NIST data
        A_N = 28.98641;
    end
end

这段代码必须保存在一个名为coefficients.m的文件中(类名和文件名必须匹配以避免有时出现奇怪的效果)。

然后假设以下 Gas.m 文件:

function Gas()

    % Usage with "disp()"
    disp('The A_N coefficient taken from NIST data is:')
    disp(coefficients.A_N)
    
    % Usage with fprintf
    fprintf('\nFrom NIST data,the coefficient A_N = %f\n',coefficients.A_N)
    
    % Usage in calculation (just use it as if it was a variable/constant name
    AN2 = coefficients.A_N^2 ;
    fprintf('\nA_N coefficient squared = %.2f\n',AN2)
    
    % If you want a shorter notation,you can copy the coefficient value in
    % a variable with a shorter name,then use that variable later in code
    A_N = coefficients.A_N ;
    
    fprintf('\nA_N coefficient cubed = %.2f\n',A_N^3)

end

然后运行这个文件(从命令行调用它)产生:

>> Gas
The A_N coefficient taken from NIST data is:
                  28.98641

From NIST data,the coefficient A_N = 28.986410

A_N coefficient squared = 840.21

A_N coefficient cubed = 24354.73

或者如果您只需要在 Matlab 控制台中访问系数:

>> coefficients.A_N
ans =
                  28.98641

现在所有这些例子都假设类文件 coefficient.m 在当前的 Matlab 范围内是可见的。对于 Matlab,这意味着该文件必须在 MATLAB 搜索路径中(或者当前文件夹也可以)。

有关什么是 Matlab 搜索路径及其工作原理的更多信息,您可以阅读:


在您的情况下,我会创建一个包含所有这些类的文件夹,然后将此文件夹添加到 Matlab 路径中,这样您就不必再担心单个脚本、函数或程序调用它了。

,

有关为此使用类定义的提示,请参阅 this link。提示的重点是:

  • 可以直接访问属性获取值
  • 可以添加属性来给出常数的单位(强烈建议!)
  • 可以添加注释作为常量的帮助文本
  • doc 命令会自动为这个 classdef 创建一个参考页面

例如,

2
3

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。