![](/img/trans.png)
[英]How to Save Variables from a Matlab Matfile to Individual Structures within that Matfile
[英]creating variables from structures in matlab
我有以下示例表示要解决的问题类型:
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
让我知道我是否误会了。
您问题的直接答案是使用assignin
函数,如下所示(编辑:就像10分钟前建议的macduff一样):
%Starting with a Final structure containing the data, like this
Final.textdata = {'DateTime','St','uSt','Ln','W'};
Final.data = rand(365,4);
for ix = 1:4
assignin('base',Final.textdata{ix+1}, Final.data(:,ix));
end
但是,我强烈不鼓励使用动态变量名称对这样的数据进行编码。 以这种方式开始的代码通常以充满长字符串连接和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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.