Matlab中常数值和相依参数的分离定义

Matlab中常数值和相依参数的分离定义,matlab,constants,code-cleanup,Matlab,Constants,Code Cleanup,在我的代码中,我有很多常量值和参数,它们占用了我代码中很大的空间 例如,在C++中,我将创建一个头文件和一个单独的文件,在其中我将这些参数定义为,例如“const type”,并与main或其他.cpp文件共享头文件 如何在MATLAB中保持这种结构化,值得吗 例如:系数.m如下所示: classdef coefficients properties(Constant) % NIST data A_N = 28.98641; end end f

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

例如,在C++中,我将创建一个头文件和一个单独的文件,在其中我将这些参数定义为,例如“
const type
”,并与main或其他.cpp文件共享头文件

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

例如:系数.m如下所示:

classdef coefficients
    properties(Constant) 
        % NIST data
        A_N = 28.98641;
    end
end
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
另一个文件:Gas.m我想使用的
A\u N
如下所示:

classdef coefficients
    properties(Constant) 
        % NIST data
        A_N = 28.98641;
    end
end
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
有关为此使用类定义的提示,请参见。小贴士的亮点包括:

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

有关为此使用类定义的提示,请参见。小贴士的亮点包括:

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


假设类
系数
定义为:

classdef coefficients
    properties(Constant) 
        % NIST data
        A_N = 28.98641;
    end
end
此代码必须保存在名为
coverties.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

然后运行此文件(从命令行调用)将产生:

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

>> coefficients.A_N
ans =
                  28.98641

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

有关什么是Matlab搜索路径及其工作方式的更多信息,请阅读:



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

好,假设类
系数定义为:

classdef coefficients
    properties(Constant) 
        % NIST data
        A_N = 28.98641;
    end
end
此代码必须保存在名为
coverties.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

然后运行此文件(从命令行调用)将产生:

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

>> coefficients.A_N
ans =
                  28.98641

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

有关什么是Matlab搜索路径及其工作方式的更多信息,请阅读:



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

当我有很多常量时,我使用一个单独的类来保存它们,如中所示。或者,根据你的常数代表什么以及它们的链接方式,你可以使用@Hoki,谢谢。命名常量似乎正是我想要的。你会为它们创建一个单独的函数,还是将它们保存在所谓的主类中,包含所有的数学计算和绘图?是的,我会将它们保存在一个单独的类文件中。只要文件位于Matlab路径中,就可以在程序中随时调用它们。如果某些常量更一般(不只是这个程序特有的),任何需要它们的程序都可以使用它们。@Hoki在另一个m中如何使用这些值。文件我几乎什么都试过了。。。是否必须为每个.m文件指定Matlab路径,或者您是指将所有.m文件保存在同一文件夹中,我就是这么做的?我已经更新了我原来的帖子。你读了文档链接到最后了吗?在向您展示如何定义这些类之后,他们提供了如何使用这些类的示例。在您的情况下,忘记导入
和头
概念,只需在需要的行调用常量。对于您的类,只需在任何地方(在控制台中、任何脚本或函数中)调用
coverties.A\N
,它就会工作。只需删除导致明显错误的其他代码位。还要记住,Matlab是区分大小写的:
系数
系数
不同。当我有很多常量时,我使用单独的类来保存它们,如中所示。或者,根据你的常数代表什么以及它们的链接方式,你可以使用@Hoki,谢谢。命名常量似乎正是我想要的。你会为它们创建一个单独的函数,还是将它们保存在所谓的主类中,包含所有的数学计算和绘图?是的,我会将它们保存在一个单独的类文件中。只要文件位于Matlab路径中,就可以在程序中随时调用它们。如果某些常量更一般(不只是这个程序特有的),任何需要它们的程序都可以使用它们。@Hoki在另一个m中如何使用这些值。文件我几乎什么都试过了。。。是否必须为每个.m文件指定Matlab路径,或者您是指将所有.m文件保存在同一文件夹中,我就是这么做的?我已经更新了我原来的帖子。你读了文档链接到最后了吗?Th