如何使用函数在MATLAB中分配变量?

时间:2015-05-20 02:44:43

标签: matlab function variable-assignment

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

global car


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

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

为什么这不起作用?我不需要函数来返回任何东西,我只需要它们来分配属性。

编辑:

有人建议如下,但是当我输入最后一个“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

EDIT2: 尝试失败: enter image description here

1 个答案:

答案 0 :(得分:2)

它对我有用。但是,您需要确保上述语句进入函数脚本,并确保在运行此函数之前在工作区中创建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变量及其范围来自工作区并动态添加字段,使其成为一个结构,如上所示。