[解決済み] MATLABのエラーです。添え字のインデックスは実数の正の整数か論理値でなければならない
質問
現在、私のコードを実行しているところですが、困った問題が見つかり、解決するためのアイデアが全くありません。
私が鍛えている関数は次のようなものです。
function out = CointPairs(PriceMat, Symbols)
out=[];
NofStocks = size(PriceMat, 2);
CointMatrix= zeros(NofStocks);
[rows, cols] = find(CointMatrix);
CointPairs = [rows, cols];
**cf= (CointPairs(:,1)-CointPairs(:,2))==0;**
CointPairs(cf,:) = [];
if(isempty(CointPairs))
warning('No Cointegrated Pairs Found')
return
end
end
そして、血まみれの問題はこの行で発生します。
cf= (CointPairs(:,1)-CointPairs(:,2))==0;
というのは、quot;添え字のインデックスは、実数の正の整数か論理値でなければならないからです。 入力変数 "PriceMat" は価格行列 60x10 で、"Symbols" は 10x1 の文字列です。
もう一つ質問です :) 添え字のインデックスとはどういう意味ですか?
よろしくお願いします。
解決方法は?
ご質問を一つずつ解決していきましょう。
<ブロッククオートさて、入力変数 "PriceMat" は 60x10 の価格行列で、"Symbols" は 10x1 の文字列でしたね。
を見てみましょう。
CointPairs
変数を使用します。 を使用した結果です。
find
コマンドを使用します。 という場合があるかもしれません。
CointPairs
を生成します。
空
の行列になります。これは
find
が存在する場合があります。
入力なし
の中で
CointMatrix
が1(または0以外)である場合。 この場合
CointPairs
は、要件を満たす要素がないため、実際には空となります。
そのため、このエラーが発生するのは、このような操作を
空
行列は許されないのに。を移動させる必要があります。
if
ステートメント
前に
する
CointPairs = [rows, cols];
. そうすれば、アクセスエラーになることはないでしょう。 つまり、こうするのです。
[rows, cols] = find(CointMatrix);
CointPairs = [rows, cols];
%// Move here
if(isempty(CointPairs))
warning('No Cointegrated Pairs Found');
out = []; %// Make output empty - Must return something or you get an error
return
end
%// Continue here
cf= (CointPairs(:,1)-CointPairs(:,2))==0;
CointPairs(cf,:) = [];
%// More code here...
%// ...
一つ細かいコメントをすると、出力変数が
out
しかし、あなたはそれをコードのどこにも代入していません。 これは意図的なものなのでしょうか?
<ブロッククオート
もう一つ質問ですが、quot;subscript indices"とは一体どういう意味なのでしょうか?
添え字インデックスとは、配列/行列の要素にアクセスするために使用する値のことです。 例えば、あなたの行列がそうだとします。
A = [1 2 3; 4 5 6; 7 8 9];
を行うことで
A(2,2)
となり、要素5が得られます。 2行目と2列目は、次のように知られています。
添え字インデックス
. インデックスは複数を意味するので、行と列の位置の1組だけでなく、2つの要素の配列を使用して、行列の行と列にアクセスすることができます。 その中の対応する各要素のペアが添え字インデックスとなります。
基本的には、行列の行と列にアクセスするために使用する数値です。 行列 / 配列の要素にアクセスするには
正の数
(1,2,3,4...など)または
論理演算子
(すなわち
true / false
). 空の行列,0,負の整数,浮動小数点数は許されない.
上記の有効な入力のいずれも使用せずに行列にアクセスしているため、このエラーが発生します。
お役に立てれば幸いです。
関連
-
[解決済み] matlabエディタで複数の行をコメントするためのショートカットキーはありますか?
-
[解決済み] Matlabで矢印を描くには?
-
[解決済み] 部分ピボッティングによるLU分解 Matlab
-
[解決済み] ベクトルにおける四分位値の0.25から0.75までの数値 MATLAB
-
[解決済み] MATLABとラスタープロット
-
[解決済み] MATLABでマシンイプシロンを計算する方法は?
-
[解決済み] Matlabで固有ベクトルを正しくプロットする
-
[解決済み] Matlab - rectangle関数を使用せずに矩形をプロットする
-
[解決済み] 入力引数が多すぎる Matlab ode45
-
[解決済み] Matlabでベクトルを表示(印刷)するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] double 型の入力引数に対して未定義の関数 'int' が存在する [重複] 。
-
[解決済み] Matlabの角括弧と中括弧の違い?
-
[解決済み] MATLABでベクトルからNaNを除去する
-
[解決済み] グラフと関係のないカスタム凡例を追加する
-
[解決済み] Matlabでのリッジ回帰とOLS回帰
-
[解決済み] Ax = B の形の行列を解く ==> エラー。行列が特異に近い、またはスケールが悪い
-
[解決済み] matlabで三角行列を作る
-
[解決済み] Matlab の imrect を用いて,新しい矩形の座標を取得します.
-
[解決済み] MatlabでY軸のプロット範囲を調整する方法は?
-
[解決済み] MATLABのコードヘルプです。バックワードオイラー法