2016-06-17 10 views
1

別の列の数値(列9としましょう)特定の数に等しく、これをグラフにプロットします。別の列の数値が特定の数値と等しい場合に列内の数値をプロットする方法

たとえば、列9の値が= 4の場合、列10とプロットの対応する値を取得します。私は行のインデックス番号を時間のマーカーとして使用しています。

私は波形を取得するために列10をすべてプロットしていますが、列9のデータを使用して特定の時点で発生するコマンドを表す波形にマーカーを追加したいとします。私は私が初めて私のコードの最小作業例を使用しようとしてきたように私の説明は、明らかであると思います

E = csvread('Experiment_at_10_45_1.csv'); 
[signal_rows, signal_columns] = size(E); 
t=(1:signal_rows)/128; %128 samples per second 

%% SNR plot for down frequency 
plot(t,E(:,13),'k') 

は、ここに私のコードです。

+0

[mcve]のポイントは、ユーザーが質問に記載されているものだけで問題を再現できるようにすることです。あなたの例は '' Experiment_at_10_45_1.csv ''に依存していますが、誰もあなたが持っていません。その間に私は[論理インデックス](http://www.mathworks.com/help/matlab/math/matrix-indexing.html#bq7egb6-1)と[すべてのコンピュータ科学者が知っておくべきこと浮動小数点演算](http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) – excaza

+0

このことについて申し訳ありません – Cristophs0n

答えて

1

これを行うには、論理インデックスを使用する必要があります。最初に0(偽)と1(真)の配列を作成したい場合は、列9が必要な値と等しい値を入力します。

bool = E(:,9) == 4; 

その後、行インデックスとしてこの01配列を使用することをお勧めします。これは、列9が4に等しい行だけを取得します。これはlogical indexingと呼ばれます。

E(bool, 10) 

次にあなたがこの

plot(t(bool), E(bool, 10)) 

をプロットすることができたように、値が原因浮動小数点表現に正確 4にされないことがあり、しかし指摘しました。これを回避するには、非常に小さいイプシロンを使用して「十分に近い」かどうかをチェックしたいだけです。

bool = abs(E(:,9) - 4) < 1e-12; 
+0

私はOPが 'E(:、9)= = 4 ' – BillBokeey

+0

@BillBokeeyありがとうございました。まだコーヒーの私の最初のカップに、明らかに。 – Suever

+0

それはまさに私がやろうとしていたものです。私は数日間これを処理しようとしていましたが、私は論理インデックスを調べる必要があることを認識していませんでした。ありがとう、あなたは私の一日を作った。 – Cristophs0n

関連する問題