2014-10-08 55 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