2014-10-08 56 views
0

我繪製了2個圖表,其中實時數據正在繪製成功。我想用第三張圖作爲實驗目的。
我在MatLab中這樣做。 下面是代碼:使用MatLab在單個窗口中繪製3個活動圖?

 fse = 220; 
     fsa = 50; 
     secBuffer = 10; 
     accName = {'F/B'; 'U/D'; 'R/L'}; 
     accBuffer = zeros([fsa*secBuffer,numel(accName)]); 
     final = eegBuffer*5; 


     eegCounter = 0; 
     plot1 = true; 
     conf1 = true; 

     if eegCounter == 44 
     if plot1 
     subplot(3,1,1); 
     time = 0:1/fse:secBuffer-1/fse; 
     h1 = plot(time,eegBuffer); 
     legend(eegName, 'Location','EastOutside'); 
     xlabel('Time (s)') 
     ylabel('Voltage (uV)')   

     subplot(3,1,2); 
     time = 0:1/fsa:secBuffer-1/fsa; 
     h2= plot(time,accBuffer); 
     xlabel('Time (s)') 
     ylabel('Acceleration (mG)') 
     legend(h2, accName, 'Location','EastOutside'); 

     subplot(3,1,3); 
     time = 0:1/fse:secBuffer-1/fse; 
     h3 = plot(time,eegBuffer); 
     xlabel('final'); 
     ylabel('time'); 
     %legend(h2, accName, 'Location','EastOutside'); 

     plot1 = false; 

     else 
     cell1 = (num2cell(eegBuffer,1))'; 
     set(h1,{'ydata'},cell1); 
     cell2 = (num2cell(accBuffer,1))'; 
     set(h2,{'ydata'},cell2); 
     cell3 = (num2cell(final,1))'; 
     set(h3,{'ydata'},cell3); 
     end 

final值是eegBuffer*5
eegBuffer由於第三圖是僅僅第一圖形的幅度被定義爲eegBuffer = zeros([fse*secBuffer,numel(eegName)]);

,應當相比於第一圖形更具破壞性曲線圖。然而,它顯示了一條直線,我無法分辨它是否繪製第3個圖的實時數據。
幫助表示讚賞

回答

2

eegBuffer通過調用函數零來初始化,所以即使在乘以五(或任意數字)之後它仍然是一個零數組。

+0

eegBuffer的值永遠不會爲零。它是根據'secBuffer'和'eegName'的值計算的。 secBuffer的值是10,eegName是通道的名稱:'{'TP9'; 'FP1'; 'FP2'; 'TP10'}'。並且eegBuffer通過以下公式計算:'eegBuffer = zeros([fse * secBuffer,numel(eegName)]);' – brainReader 2014-10-08 09:19:45

+1

如果您的最後一句中的賦值是唯一賦值給變量eegBuffer,那麼它將是一個零矩陣。函數零的文檔狀態「零(M,N)或零([M,N])是零的M×N矩陣。」 – danny 2014-10-08 09:31:12

+0

我明白了。看'subplot(3,1,1)'。它類似於第3個圖,第1個圖可以繪製實時數據,eegBuffer的值在第1個圖中使用。我不明白爲什麼它在第三張圖中變爲零。 – brainReader 2014-10-08 09:44:10