我在 matlab 中有一个结构(gilts),其中包含许多字段(gilt_name)。该结构是从 excel 导入的工作簿,每个字段对应于该工作簿中的一个工作表。每个工作表都是日期的时间序列和相应的后备母猪价格。在导入 matlab 之前,我按照何时从 Excel 文件转换日期中的说明将 excel 中的日期转换为字符串。但是如何在 matlab 中同时将此转换应用于多个字段?我有数百个与每个 gilt_name 对应的数据数组,它可以为我节省大量时间。非常感谢。
问问题
3487 次
2 回答
2
假设我们有一个 Excel 电子表格,其中包含三张工作表,每张工作表都包含一系列日期和一些相应的值:
考虑使用以下代码将数据导入 MATLAB:
%# for each of the three sheets
data = cell(3,1);
for i=1:3
%# read the sheet as unprocessed data (both text and numeric)
[~,~,raw] = xlsread('data.xlsx', i);
%# parse strings as serial dates and combine into a matrix
data{i} = [datenum(raw(:,1),'dd/mm/yyyy') cell2mat(raw(:,2))];
end
现在单元格数组中的每个单元格data
都有第 i 个工作表的数据。日期表示为序列日期编号。例如,我们可以将第一个时间序列绘制为:
plot(data{1}(:,1), data{1}(:,2))
datetick('x', 'dd', 'keepticks')
xlabel('days'), ylabel('prices')
于 2012-08-11T14:39:24.767 回答
1
嘿,您可以列出您的字段名称
names = fieldnames(gilts)
然后,您需要做的就是在 for 循环中循环,通过增量计数器访问 names 变量。
例如,
names = fieldnames(gilts);
for i = 1 : length(gilts),
n = [gilts(i,1). 'names(i)' (:,:)];
eval(n); % and do what you need to do
end
因此,您可以通过这种方式将“名称”中的字符串索引为 gilts 的字段。
于 2012-08-11T14:39:13.520 回答