2017-08-23 2 views
2

私はバイナリマトリックス96x4000を持っています。ここで96は私が記録した96個の電極を表し、4000は時点4000msです。各1はそのニューロンからの1つのスパイクを表す。各時点で96チャンネルのラスタプロットをアニメートしたい

今私がしたいことは、これらのチャネルのラスタを時間軸にプロットしています。各時点では、すべての96チャネルで発生するスパイクが表示されている必要があります。最初の時点では、11チャネルしかスパイクしていないとしましょう。したがって、行は11行にしか表示されません。

ここでは、96個の行をそれぞれの時点(アニメーション化)で同時に描画したいと考えています。

私はここまで得ている -

https://gfycat.com/gifs/detail/EmptyFrailHalibut

しかし、私はまだこれらの大きな行を取得 -

http://imgur.com/a/vL68S

これは私の現在のコードです -

figure 
v = VideoWriter('testRaster') 
open(v); 
hold on 
ylim([1 100]) 
xlim([-1 3]) 
for i = 1:4000 
valIdx = [find(spikeTrains(:,i)==1)]'; 
if ~isempty(valIdx) 
line([t(i)/1000 t(i)/1000],[[valIdx]' (spikeTrains(valIdx,i).*[valIdx]')+1],'Color','k') 
drawnow 
writeVideo(v, getframe(gcf)); 
end 
end 
close(v) 

私はsomeon eは私を助けることができた!ありがとう!

+0

私はあなたのコードを試して、期待どおりに動作しました。私はt = -1000:3000を定義しなければならなかった。上のコードでtの定義を表示していませんでした。問題がどこにあるのでしょうか? –

答えて

0

「大きな線」は、すべてのニューロンが一緒に発砲している場合に過ぎません。各ニューロンの短い垂直線を作成しているので、それらは積み重ねられ、視覚的に一緒に接続されます。 1つの選択肢は、各電子の垂直距離(高さ)を1から0.5に短縮することである。例えば、[1 2]から最初の電子の代わりに[1.2,1.8]に進む。

私が好むもう1つの選択肢は、オプションを使用し、1つの短い縦線の代わりに1点につき1点で、点(1つのニューロンあたり1つ)としてプロットを作成することです。インターリービングホワイトスペースは、より自然で視覚的なギャップを提供することができる。

すでにバイナリデータを扱っているので、findの代わりにコードをベクトル化することもできます。これを行うには、縦軸に各チャンネルを描画する位置に対応するy位置のベクトルを作成し、その時刻にスパイクを付けてインデックスを付けます。あなたのtでも同じことが起こります。

ここで私はspikeTrainst_st)の値をシミュレートしています。

clear all; close all; 
figure; 
v = VideoWriter('testRaster'); 
numChannels = 96; 
spikeTrains = (randi(2,numChannels,4000)-1)&1; %make it logical matrix 
channels = 1:numChannels; 
T_ms = 4000; 
t_s = repmat(1:T_ms,numChannels,1)/1000; 
open(v); 
hold on; 
ylim([1 100]); 
xlim([-1 3]); 
for k = 1:T_ms 
    line(t_s(spikeTrains(:,k),k),channels(spikeTrains(:,k)),'Color','k',... 
      'marker','.','linestyle','none'); 
    drawnow(); 
    writeVideo(v, getframe(gcf)); 
end 
close(v) 

もしあなたspikeTrainsある数値(double型)1と0の場合、あなたは論理1と0にそれらを変換する必要があるかもしれません。私は上記の&でこれをやっていますが、これは、MATLABの以前のバージョンのいくつかのために必要とされていません。この

  • spikeTrains = spikeTrains==1; % transform numerical matrix to logical
  • spikeTrains = spikeTrains&1; % another way to do it

を行うことができ、他の方法があります。気を付けるだけのもの。

関連する問題