如何在 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
变量及其来自工作区的范围并动态添加字段以使其成为如上所示的结构。
我想创建一个结构,然后使用函数来分配各种属性。例如,我有以下代码:
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
变量及其来自工作区的范围并动态添加字段以使其成为如上所示的结构。