要在MATLAB中处理数据,我必须执行某个函数,我们称之为function()
。由于要处理的数据很多,比如大数组Time
或Voltage
(但还有更多),我会逐个执行这些数据:
TimeNew = function(Time);
VoltageNew = function(Voltage);
... etc
所以这大概做了10次。此外,我必须多次做这样的事情,导致大约30行代码,它们都做同样的事情,但是变量不同。
有没有办法优化这个?我正在使用最新版本的MATLAB(2015b)并安装了所有工具箱。
答案 0 :(得分:1)
一种可能的解决方案是将输入数组存储到struct
中,它们使用该结构作为函数的输入。
在该功能中,您可以使用fieldnames
和getfiled
内置功能识别每个字段的数量和内容。
该函数可以返回structure
作为输出,其名称可以与输入结构的名称相同。
在下面的示例中,生成了三个数组,并且函数siply计算它们的平方。
var_1=1:10;
var_2=11:20;
var_3=21:30;
str_in=struct('var_1',var_1,'var_2',var_2,'var_3',var_3)
str_out=my_function(str_in)
功能
function [str_out]=my_function(str_in)
f_names=fieldnames(str_in)
n_fields=length(f_names);
for i=1:n_fields
x=getfield(str_in,f_names{i})
str_out.(f_names{i})=x.^2;
end
希望这有帮助。
Qapla'
答案 1 :(得分:0)
您可以尝试cellfun
allResultsAsACell = cellfun(@function, {Time,Voltage,...,varN});
这相当于
allResultsAsACell{1} = function(Time);
allResultsAsACell{2} = function(Voltage);
...
allResultsAsACell{N} = function{VarN};
问题只是将指数与值进行匹配。我确定您可以根据需要对其进行编码(例如timeInd = 1; voltageInd =2; ...
)
要了解有关cellfun
方法的更多信息,请键入
help cellfun
进入MATLAB终端。