2012-02-15 7 views
-1

tr9sh、質問を編集していただきありがとうございますが、私は毎日のリターンを計算することを求めなかったことを明確にする必要があります。私が望むのは、データの「価格」を入力せずに日付の行を特定することによって、年間収益を計算することです。数式は次のようになります。(価格(2001/1/20)/価格(2000/1/21) - 1)Matlab:株式ごとのリターンを計算する方法

「n期のn株」の終値は以下のようにMatlabにインポートされます。

2000年1月1日23.4 78.9 ...

2000年1月2日23.3 67.1 ...

...

2001年1月1日23.2 77.1 ...

2001/1/2 24.1 78.1 ...

各列の数値は各在庫の価格です。それぞれの年間収益を計算したい場合は、どのようにコードを表示する必要がありますか?

私はあなたの文字列を「検索」を使用しようとしている

Return = (filename(find(2001/1/1)),2)/(filename(find(2000/1/1)),2) - 1 
+0

データがテキストファイルの形式であり、各エントリ間にスペースを入れていますか? –

+0

申し訳ありませんが、私はそれを明確に書きませんでした。スペースはありません。それはマットです。書式 – user1205030

+0

より明確にする必要があります。 MATLAB( 'filename')に.matファイルの名前を' load filename'と入力すると、結果はどうなりますか? –

答えて

0

私は非常にあなたが望むものを知っていないを取得するのscanf(http://www.mathworks.nl/help/techdoc/ref/fscanf.html)関数を使用するのが最も簡単ですが、以下のソリューションは、あなたのために働くことがあります。あなたのデータが行列Xに格納されているとします。次に

close = X(:,2:end); 
ret = close(2:end,:) ./ close(1:end-1,:) - 1; 
dates = X(2:end,1); 
+0

実際に私の問題を解決しました。ありがとう! – user1205030

+0

Cool。今、あなたが私に(そしてあなた自身)好意を持ってもらうことができれば、座って、このコードがなぜあなたのために働くのか理解してください。それは長期的にはより良いでしょう! –

+0

コードは私の問題を直接解決しませんでしたが、それは私が理解して作業を完了するのに役立ちます。ご協力いただきありがとうございます :) – user1205030

1

を試してみました。次回はregexp(http://www.mathworks.nl/help/techdoc/ref/regexp.htmlhttp://www.mathworks.nl/help/techdoc/ref/regexpi.htmlは大文字と小文字を区別しません)

しかし、私は別のやり方をします:それぞれの行を読み、日付と価格を抽出します。 これが完了したとき:年/月および最終日の日付を検索します(別々の配列に格納され、文字ではなく数字として検索されます)。見つかったインデックスを使用して対応する価格を価格表から外します

btw、それはマットファイルに保存されていますか?しかし、あなたはもっとテキストファイルのように見えますか? は、テキストファイルの場合、それはあなたのデータ

+0

これはマットファイルです。はい、日付は数値として格納されます。最初の列は日付で、2番目の列はn-2個の異なる株式の価格です。各株のリターンごとに計算を実行するループを使用する必要がありますか、それとも数式がありますか?ありがとう!! – user1205030

関連する問題