0

我在 matlab 中有一个结构(gilts),其中包含许多字段(gilt_name)。该结构是从 excel 导入的工作簿,每个字段对应于该工作簿中的一个工作表。每个工作表都是日期的时间序列和相应的后备母猪价格。在导入 matlab 之前,我按照何时从 Excel 文件转换日期中的说明将 excel 中的日期转换为字符串。但是如何在 matlab 中同时将此转换应用于多个字段?我有数百个与每个 gilt_name 对应的数据数组,它可以为我节省大量时间。非常感谢。

4

2 回答 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 回答