私は、整数ベクトルの値に基づいて色を変える縦線の条件付きプロットを行いたいと思っています。これらの値は、0〜4の範囲の整数です。Matlab:ループで行われる条件付きプロットはベクトル化できますか?
現在、私はループを使ってテーブルを通って線をプロットしています。これは動作しますが、大量のデータには時間がかかります。ベクター化できるかどうかは疑問です。
添付されているのは、単純にベクトルをループするデータベクトル(サンプル)をループするためのスクリプトを取り除いたもので、整数の値に基づいて垂直線をプロットします。
また、私が作成したシンプルな変数 'SAMPLE'を添付してワークスペースに貼り付けます。
for i=1:size(sample,1)
if sample(i)==1
line([i i] ,[0 10], 'Marker','.','LineStyle','-','Color','r');
elseif sample(i)==2
line([i i] ,[0 10], 'Marker','.','LineStyle','-','Color','b');
elseif sample(i)==3
line([i i] ,[0 10], 'Marker','.','LineStyle','-','Color',[1 .5 0]);
elseif sample(i)==4
line([i i] ,[0 10], 'Marker','.','LineStyle','-','Color','g');
end
end
変数
:
sample=[[3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;4;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;4;0;0;0;0]];
しかし、このようにプロットする「ベクトル化」に可能です/私が行っているように、ループで繰り返しそれを行うには持っOのw?
うわー!それは間違いなく効率的で、私が探していたラインに沿っています。前に使用したベンチマークを使って、それを実行するのに約3秒かかりました。このmodで同じデータを使用すると、0.007036秒かかりました。したがって、〜400倍速くなります。 :) – pelt