如何在 MATLAB 中使用函数为变量赋值?

How to use functions to assign variables in MATLAB?

我想创建一个结构,然后使用函数来分配各种属性。例如,我有以下代码:

global car


function f1(x)
car.color = x;
end

function f2(x)
car.make = x;
end

为什么这行不通?我不需要函数来 return 任何东西,我只需要它们来分配属性。

编辑:

有人提出了以下建议,但是当我输入最后一个 "car" 命令时,我仍然得到所有空属性:

car = struct('make',[],'model',[],'color',[],'year',[]);
% 
    function y = test1(x)
        car(1).color = x;
        y = car;
    end
% 
    function y = test2(x)
        car(1).make = x;
        y = car;
    end
% 
y = test1('red');
y = test2('Mazda');
% 
car

编辑2: 失败的尝试:

对我有用。但是,您需要确保上述语句进入 function 脚本,并确保在 运行 之前在工作区中创建 car global这个函数,并且也在内部函数中执行。在工作区中执行 global car 可确保变量为 global 然后您必须在函数脚本中再次执行此操作,以便我们保持相同的范围。

例如,这是我设置的,我把它放在一个名为 test_func.m:

的文件中
function test_func    

global car;   

function f1(x)
car.color = x;
end

function f2(x)
car.make = x;
end

f1('blue');
f2('audi');   

end

设置完成后,我只需在命令提示符下执行此操作即可:

>> global car;
>> test_func;
>> disp(car);

我明白了:

color: 'blue'
 make: 'audi'

在工作区中执行 global car 允许变量在每个范围内可见,然后当我调用该函数时,执行 global car 允许我们修改 car 变量及其来自工作区的范围并动态添加字段以使其成为如上所示的结构。