2015-03-05 2 views
1

Как и в C, я хочу создать собственный тип данных, поэтому у меня есть один файл, объявляющий этот тип, и позже можно использовать их в качестве маски. То, что я хочу сделать что-то вроде этого:MATLAB объявить собственный тип данных

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 

поэтому у меня из параметров, которые можно использовать как «мой самостоятельный тип данных». В конце моего кода я только хочу написать

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

Есть ли возможность определить что-то вроде param, что я могу использовать в качестве моей системы широкого прототипа? Выполнение этого в функции не работает, потому что тогда структуры являются только локальными переменными ....

+0

Matlab поддержку объектно-ориентированное программирование, если это то, что вы имеете в виду. Кроме того, поскольку он динамически типизирован, вы можете просто «p.argument1» в любое время. –

+0

уверен, но я хочу, чтобы p содержал все значения, определенные в 'param', даже если они пусты (потому что они заполняются позже или что-то еще). Поэтому я могу не только использовать 'p.argument1 = ...' –

+2

Matlab имеет 'struct''s. Вам даже не нужно объявлять 'p'; просто добавьте поля «на лету» –

ответ

2

Это делает то, что вам нужно?

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: [] 
+0

сначала спасибо за ваш ответ, но, возможно, мой вопрос не был хорошо описан. Я хочу определить больше tahn одну «глобальную» структуру и каждый из которых имеет разные поля. Я уточню свой вопрос ... –

Смежные вопросы