Matlab中常数值和相依参数的分离定义
在我的代码中,我有很多常量值和参数,它们占用了我代码中很大的空间 例如,在C++中,我将创建一个头文件和一个单独的文件,在其中我将这些参数定义为,例如“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
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