1

2 つの時系列をマージして、matlab でポートフォリオを作成するコードがあります。「ポート」からファンド名を持つベクトルを取得するように、ファンドのヘッダーのベクトルを取得するにはどうすればよいですか?

Fund1ts=fints(Fund1Dates,Fund1Data,'Fund1');
Fund2ts=fints(Fund2Dates,Fund2Data,'Fund2');

%CREATE PORTFOLIO
Port=merge(Fund1ts,Fund2ts,'DateSetMethod','Intersection');

コマンド ウィンドウでポートを見ると、それらが存在します。ただし、ワークスペース ウィンドウからポートを開くと、データのみが存在するため、データを取得する際に問題が発生します。ありがとうございました。

4

1 に答える 1

3

ヒュー・ノーランもコメントで提案したように、これはあなたが求めている名前を取得するはずです:

fnames = fieldnames(Port, 1)  

ドキュメントから:

fnames = fieldnames(tsobj, srsnameonly) は、srsnameonly の設定に応じてフィールド名を返します。srsnameonly が 0 の場合、関数は共通フィールド (desc、freq、dates、および times) を含むすべてのフィールド名を返します。srsnameonly が 1 に設定されている場合、fieldnames は fnames のデータ系列のみを返します。

したがって、1上記のコード スニペットでは。Fund1と のみを返しFund2ます。

編集

Matlab で 呼び出される2 つの関数があるようです。fieldnames

名前 = フィールド名(s)
名前 = フィールド名(obj)
名前 = フィールド名(obj,'-full')

fnames = フィールド名(tsobj)
fnames = フィールド名(tsobj, srsnameonly)

1 つの入力引数で呼び出された場合、どちらも同様に動作します。ただし、この回答の将来の読者のために:上記の特定の回答Financial Toolboxは、関数のバージョンに対してのみ機能します。

于 2013-06-19T15:40:58.073 に答える