1

date(30/10/2013)、closePrice(361.08)、volume(4500014)、openPrice(362.62)、highPrice(365)、lowPrice(358.65) などのデータを含む .csv ファイルがあります。ファイルには 2510X6 のデータが含まれています。シャンデル スティック チャートをプロットしたいのですが、誰か助けてもらえますか? これは私がやったことです:

fid = fopen('Amazon.csv');
HDRS = textscan(fid,'%s %s %s %s %s %s',1, 'delimiter',',');
DATA = textscan(fid,'%s %f %f %f %f %f','delimiter',',');
fclose(fid);
outCell = cell(size(DATA{1},1), length(HDRS));

for i = 1:length(HDRS);
    if isnumeric(DATA{i});
        outCell(:,i) = num2cell(DATA{i});
    else
        outCell(:,i) = DATA{i};
    end
end

 candle (outCell{:,5}, outCell{:,6}, outCell{:,2}, outCell{:,4}, 'b', outCell{:,1}); 

ファイルを実行すると、というエラーが表示されますError using candle Too many input arguments。日付があり、日付をベクトルに変換するために配列のセルを使用することにしたため、配列のセルを使用しています。

4

2 に答える 2

1

outCell{:, 5}への呼び出しのように、中かっこのデリファレンスは、candleMatlab が「コンマ区切りリスト」と呼ぶものに展開されます。中かっこの逆参照を目にするときはいつでも、暗示されている個別の要素をカンマで区切って入力するのとまったく同じであると考えることができsize(outCell, 1)ますoutCell{1, 5}, outCell{2, 5}, outCell{3, 5}。これは、1 つだけを渡していると思っていたところに、3 つの入力引数があります。candle

私はcandleそれ自体に慣れていませんが、最初の引数として単一列のセル配列が必要な場合、単一列のセル配列を取得する方法はoutCell、通常の丸括弧逆参照でスライスすることです。 outCell(:, 5)

一方、セル配列ではなく数値candleベクトルが必要な場合は、 . もう 1 つの方法 (この 2 番目の例では、中かっこの逆参照とカンマ区切りリストの威力が明らかになります) は、カンマ区切りリストであり、角かっこで囲まれています。これは、要素の水平方向の連結を意味します。cell2mat(outCell(:, 5))[outCell{:, 5}]'

于 2013-11-21T23:27:45.603 に答える
0

これを行うには、次の方法を見つけました。

まず、日付ではなく、列ベクトル形式の日付が必要であることがわかりましたcell。それを達成する唯一の方法は、日付を数値表現に変換することです。まさにそれdatenumです。例は次のとおりです。

DateString = '11/12/2013';
formatIn = 'mm/dd/yyyy';
datenum(DateString,formatIn)

ans = 

  735550

すべての日付をこの形式に変換します。次に、時系列オブジェクトを構築すると、ここに示すようにプロットする方がはるかに簡単になると思います。これが機能するには、金融時系列オブジェクトが必要です。問題ない。ここに示すように構築できます。この場合、(ダミーの例)のように構築できると思います:

 dates={'11/12/2013';'11/13/2013'}
 higPrice=[100;100]
 lowPrice=[10;10]
 closePrice=[90;80]
 openPrice=[80;70]

 %construct a financial time series object
 tsobj = fints(datenum(dates,formatIn), [higPrice lowPrice closePrice openPrice], {'high','low','close','open'})  %put in correct order

 candle(tsobj);  %I get the plot

編集:他の名前を付けようとすると、 'high','low','open','close'機能しないことを忘れていました。たとえば、 で試しました'highPrice','lowPrice','openPrice','closePrice'。私もcandle初めて使うので理由はわかりません。

于 2013-11-21T23:35:34.887 に答える