2017-10-09 4 views
0

私はMatlab crspのテーブルと、キーとして機能する数値のセル配列を持っています。私は変数として格納されているそのセル配列を使用してテーブルから情報を取得したい。私のコードは次の通りです:セル配列を使用したテーブルからのデータの取得 - Matlab

function y = generateWeights(permno_vector, this_datenum, crsp) 

    crsp(crsp.PERMNO == permno_vector,:); 

crspはpermno_vectorがセル配列であるのに対し、crspはテーブルとして定義されています。それは情報を検索するために使用されるいくつかのpermnosを含んでいます。

この場合、私のコードは動作していないので、crspの値にアクセスすることはできません。ベクトル配列を使用してテーブル値にアクセスするにはどうすればよいですか?

+0

質問がありますか? – excaza

+0

申し訳ありません、はい私はします。問題はそれが単に機能していないということです。このような配列を使用してテーブル内の複数の値にアクセスするにはどうすればよいですか。 – alexp2603

+0

これから何を出力する予定ですか?最後のステートメント:crsp(crsp.PERMNO == permno_vector、:);何もしていない、つまり何かに出力を割り当てたり、印刷したりしていません。 –

答えて

1

James Johnstoneが指摘しているように、投稿したコードの最初の問題は、yに何も割り当てていないため、関数が値を返さないためです。あなたがそれを修正したら、私はあなたが見ているエラーがUndefined operator '==' for input arguments of type 'cell'.であると仮定します。質問をするときに、この種の詳細を含めることは常に役立ちます。

構文

crsp(crsp.PERMNO == x,:) 

xに等しいPERMNOを持っていたcrspのそれらの行を返します。しかし、あなたは可能な値のリストを提供し、あなたのターゲット変数がリスト内の値のいずれかに一致するあなたのテーブルのすべての行は、あなたがismemberを使用する必要が戻って取得したい場合:

crsp(ismember(crsp.PERMNO, cell2mat(permno_vector)),:) 

permno_vectorがある場合セルのアレイ、又は単に:

crsp(ismember(crsp.PERMNO, permno_vector),:) 

かわりに数値ベクトルとしてpermno_vectorを供給することができる場合(crsp.PERMNOのデータはまた、数値でのコースと仮定)。

関連する問題