Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB声明自己的数据类型_Matlab - Fatal编程技术网

MATLAB声明自己的数据类型

MATLAB声明自己的数据类型,matlab,Matlab,像在C中一样,我想创建一个自己的数据类型,所以我有一个文件声明这个类型,以后可以将它们用作掩码。我想做的是这样的: function declareParameter() param1=struct(... 'argument_a1',[],... 'argument_a2',[],... 'argument_a3',[]); param2=struct(... 'argument_b1',[],... 'argument_b2',[]); param

像在C中一样,我想创建一个自己的数据类型,所以我有一个文件声明这个类型,以后可以将它们用作掩码。我想做的是这样的:

function declareParameter()
param1=struct(...
    'argument_a1',[],...
    'argument_a2',[],...
    'argument_a3',[]);

param2=struct(...
    'argument_b1',[],...
    'argument_b2',[]);

param2=struct(...
    'argument_c1',[],...
    'argument_c2',[],...
    'argument_c3',[],...
    'argument_c4',[]);
end
所以我有param,我可以用它作为“我的自定义数据类型”。在我的代码后期,我只想写

p=param1;
p.argument_a1=....;
o=param2;
o.argument_b2=....;
n=param3;
n.argument_c1=...;
n.argument_c4=...;

是否有可能定义类似于
param
的东西,我可以将其用作我的系统范围的原型?在函数中执行此操作不起作用,因为这样结构仅是局部变量。…

这是否满足您的需要

function out = param
out=struct(...
    'argument1',[],...
    'argument2',[],...
    'argument3',[]);
end

>> a = param
a = 
    argument1: []
    argument2: []
    argument3: []
>> b = param
b = 
    argument1: []
    argument2: []
    argument3: []
或者,您可以创建一个简单的对象,如果您希望将内容限制为仅包含名为
argument1
argument2
argument3
的字段,则该对象可能会更好:

classdef param
    properties
        argument1
        argument2
        argument3
    end
end

>> a = param
a = 
  param with properties:

    argument1: []
    argument2: []
    argument3: []
>> b = param
b = 
  param with properties:

    argument1: []
    argument2: []
    argument3: []

Matlab支持面向对象编程,如果这是你的意思的话。此外,由于它是动态键入的,所以您可以随时执行
p.argument1
。当然,但我希望,p包含
param
中定义的所有文件,即使它们是空的(因为它们稍后会被填充或其他内容)。因此,我不仅可以使用
p.argument1=…
Matlab具有
struct
。您甚至不需要声明
p
;只需在fly上添加字段问题是,我们是一个团队,正在做一些事情,我想为所有人建立一个基本结构。因此,我想定义一个基本结构,每个人都可以使用,而且我必须保证,每个人都可以使用结构字段的预定义摘要。因此,动态添加字段不是一个好主意……如果您希望参数列表始终保持不变(列表,而不是它们的值),并防止用户无意中删除或覆盖,那么创建一个matlab自定义类是您最好的选择。首先感谢您的回复,但可能我的问题没有得到很好的说明。我想定义更多的“全局”结构,每个结构都有不同的字段。我会详细说明我的问题。。。