在matlab中从结构中创建变量
下面的例子表达了我试图解决的问题类型:在matlab中从结构中创建变量,matlab,variables,structure,Matlab,Variables,Structure,下面的例子表达了我试图解决的问题类型: clear all textdata = {'DateTime','St','uSt','Ln','W'}; data = rand(365,4); Final = struct('data',data,'textdata',{textdata}) clear textdata data 由此可知,Final.data包含与Final.textdata中的标题相对应的值,不包括第一个('DateTime')。因此Final.data(:,1)与标题“St
clear all
textdata = {'DateTime','St','uSt','Ln','W'};
data = rand(365,4);
Final = struct('data',data,'textdata',{textdata})
clear textdata data
由此可知,Final.data包含与Final.textdata中的标题相对应的值,不包括第一个('DateTime')。因此Final.data(:,1)与标题“St”。。。等等我要做的是在工作区中为每个向量创建一个变量。因此,我将在工作区中为St、uSt、Ln和W设置一个变量,并在Final.data中给出相应的值
如何做到这一点?这能解决您的问题吗:
for ii=2:length( textdata )
assignin('base',Final.textdata{ii},Final.data(:,ii-1));
end
如果我误解了,请告诉我。这能解决您的问题吗:
for ii=2:length( textdata )
assignin('base',Final.textdata{ii},Final.data(:,ii-1));
end
如果我误解了,请告诉我。您的问题的直接答案是使用
assignin
功能,就像这样(编辑:就像10分钟前macduff建议的那样):
但是,我强烈反对使用动态变量名对这样的数据进行编码。以这种方式开始的代码通常以充满长字符串连接和eval
语句的意大利面代码结束。最好是使用这样的结构
for ix = 1:4
dataValues(Final.textdata{ix+1}) = Final.data(:,ix);
end
或者,要在一行中获得相同的结果:
dataValues = cell2struct(num2cell(Final.data,1), Final.textdata(2:end),2)
您的问题的直接答案是使用
assignin
功能,就像这样(编辑:就像10分钟前macduff建议的那样):
但是,我强烈反对使用动态变量名对这样的数据进行编码。以这种方式开始的代码通常以充满长字符串连接和eval
语句的意大利面代码结束。最好是使用这样的结构
for ix = 1:4
dataValues(Final.textdata{ix+1}) = Final.data(:,ix);
end
或者,要在一行中获得相同的结果:
dataValues = cell2struct(num2cell(Final.data,1), Final.textdata(2:end),2)
这是我一直在寻找的,但我的数据存储在一个结构中,类似于上面的“最终”(问题修正)。这是我一直在寻找的,但我的数据存储在一个结构中,类似于上面的“最终”(问题修正)。很棒的方法,但如上所述,数据最初是在一个结构中,那么我如何将其应用于我的数据(见修订的问题),即如何获取textdata中的不同单元格?很好的方法,但如上所述,数据最初是在一个结构中,那么我如何将其应用于我的数据(见修订的问题),例如,如何访问textdata中的不同单元格?