【问题标题】:Creating a square wave to overlay data set in matlab在matlab中创建一个方波来覆盖数据集
【发布时间】:2015-03-12 15:37:26
【问题描述】:

在 Matlab 中,我试图实现以下目标:

我有一个数据集,该数据集在生物学上代表给予刺激时大脑中的激活。所以数据是这样的,我们有 9 个刺激的数据点,然后是 15 个休息的数据点,它继续像这样持续大约 300 个数据点(实时 4 分钟)。

我能够轻松地绘制数据,但我试图覆盖一个方波,它表示存在“刺激”的时间,这样只需查看图表就可以很容易地看出哪个是休息期和哪个刺激。

非常简单,我创建了一个向量 X 并使其(前 3 个点应为 0)

  X = [0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 
 0 0 0 0 0 0 0] 

并将其绘制在与数据相同的图表上。它工作正常,但问题是我需要根据我的时间尺度自动创建 X。

Total_time = [-3:1.5:302]

这是我的总时间范围,从 -3 到 302 秒,采样率为 1.5 秒。前 3 分 -3、-1.5、0 是休息时间。然后从 0 秒开始,刺激开始大约 9 秒(这将在 9 秒期间产生 6 个数据点)。

所以我的问题是 - 是否可以使用某种 for 循环来创建这个向量 X 来表示来自 0 X = 1 和下一个 10 X = 0 的 6 个数据点?我在想以下几点:

X = zeros(1,304) %to create a 1x304 vector of zeros 
X(0:3)=0
X(3:9)=1
X(9:19)=0

但话又说回来..这是手写的。

谁能帮忙?

谢谢!

【问题讨论】:

    标签: matlab for-loop vector plot matlab-figure


    【解决方案1】:

    这很容易通过模运算:

    m = 3;   %// initial low period
    n = 6;   %// high period
    p = 10;  %// low period
    s = 304; %// x size
    
    x = [zeros(1,m) mod(0:s-m-1, n+p)<n];
    

    结果(第一个值):

    0  0  0  1  1  1  1  1  1  0  0  0  0  0  0  0  0  0  0  1  1  1  1  1  1  0  0 ...
    

    请注意,如果需要,np 可以是非整数。例如,如果高周期持续 5 秒,而您的采样周期为 1.5 秒,则只需定义 n=5/1.5,即给出

    0  0  0  1  1  1  1  0  0  0  0  0  0  0  0  0  0  1  1  1  0  0  0  0  0  0  0 ...
    

    可以看出,高周期持续 4 或 3 个样本以容纳非整数 n

    【讨论】:

      【解决方案2】:

      正如您已经告诉我们的:您所拥有的是一个重复的模式。 在您的情况下,模式是矢量

      pattern = [zeros(1,3) ones(1,9) zeros(1,15-3)];
      

      所以你可以通过使用repmat复制这个向量来生成你的信号:

      startTime = -3;
      endTime = 302;
      timeStep = 1.5;
      
      %%// Computation
      time = startTime:timeStep:endTime;
      numPatterns = ceil(length(time)/length(pattern));
      X = repmat(pattern, 1, numPatterns);
      %// As the pattern will end after endTime, we remove everything beyond endTime
      X(length(time)+1:end) = []; 
      
      %%// Plot
      plot(time, X);
      

      【讨论】:

      • 非常感谢.. !!
      猜你喜欢
      • 1970-01-01
      • 2019-06-29
      • 2018-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多