多くのフィールド (gilt_name) を持つ matlab に構造体 (gilts) があります。構造は Excel からインポートされたワークブックであり、各フィールドはそのワークブックのワークシートに対応しています。各ワークシートは、時系列の日付とそれに対応する雌豚の価格です。When to Convert Dates from Excel Filesの指示に従って、matlab にインポートする前に、Excel の日付を文字列に変換しました。しかし、この変換を matlab で同時に多くのフィールドに適用するにはどうすればよいですか? 各 gilt_name に対応する何百ものデータの配列があり、多くの時間を節約できます。どうもありがとう。
3487 次
2 に答える
2
3 つのシートを含む 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 = fieldnames(gilts);
for i = 1 : length(gilts),
n = [gilts(i,1). 'names(i)' (:,:)];
eval(n); % and do what you need to do
end
このようにして、「names」の文字列を gilts のフィールドとして索引付けできます。
于 2012-08-11T14:39:13.520 に答える