Excel 计算二进制信号频率和持续时间

Excel 计算二进制信号频率和持续时间,excel,statistics,spss,duration,frequency-distribution,Excel,Statistics,Spss,Duration,Frequency Distribution,我试图分析在120赫兹下收集的一些信号数据。我有Excel和SPSS以及MATLAB,但我对它不是很熟悉。我在网上搜索了大约一个半小时,似乎找不到我要找的东西,尽管我知道这应该是相对简单的 我有一个0和1的列表。我想计算每个信号的持续时间,然后绘制信号的频率分布图,即一个直方图,描绘1/10秒时的信号百分比,2/10秒时的信号百分比,3/10秒时的信号百分比…@1秒,依此类推。我相信这是一个反向的累积分布,我正在寻找,但在我能做到这一点之前,我需要处理我的电子表格中的数据 我很难计算出如何对每组

我试图分析在120赫兹下收集的一些信号数据。我有Excel和SPSS以及MATLAB,但我对它不是很熟悉。我在网上搜索了大约一个半小时,似乎找不到我要找的东西,尽管我知道这应该是相对简单的

我有一个0和1的列表。我想计算每个信号的持续时间,然后绘制信号的频率分布图,即一个直方图,描绘1/10秒时的信号百分比,2/10秒时的信号百分比,3/10秒时的信号百分比…@1秒,依此类推。我相信这是一个反向的累积分布,我正在寻找,但在我能做到这一点之前,我需要处理我的电子表格中的数据

我很难计算出如何对每组信号求和以得到每个信号的持续时间。它会这样做:对于包含1的单元格,如果上面的单元格包含0,则开始新的和,并继续对1求和,直到出现0为止。在电子表格结束时,我会有一个信号持续时间列表,以1/120秒表示,即30秒等于0.25秒

我有100多个文件要处理,所以我正在寻找一个公式或宏来快速处理每个文件

我有4个不同设备的数据,我想按设备比较这些信号分布。 我最好在excel、spps或matlab中这样做

谢谢大家!


数据在列中格式化-我在列A中有帧计数,在列B中有信号0或1。每帧为1/120秒,每个文件有数千帧。我对波形本身不感兴趣-我这样做是为了统计,以检测长信号和短信号的分布在不同条件下是否有显著差异。最后我想要一个信号长度的列表,我可以用频率直方图来表示,我不是指波频率,而是指出现的次数

要对每组进行求和以获得每个信号的持续时间,请应用小计,并在每次更改时:选择您的列表,使用函数:求和并将小计添加到:您希望添加的任何列。

这是一种在SPSS中执行此操作的可能性

   * create some test data.
    DATA LIST FREE / frame (F8) signal (F1).
    BEGIN DATA
    1  1
    2  1
    3  0
    4  0
    5  1
    6  0
    7  1
    8  1
    9  1
    10 0
    11 0
    12 0
    13 1
    14 0
    15 1
    16 0
    17 1
    18 0
    19 1
    20 1
    END DATA.
    DATASET NAME data_orig.

    * use a work copy because data will be reduced in the process.
    DATASET COPY data_workcopy.
    DATASET ACTIVATE data_workcopy.

    * count the length of each run of "1".
    COMPUTE signallength = 0.
    IF (signal=1 AND (LAG(signal)=0 OR frame=1)) signallength = 1.
    IF (signal=1 AND LAG(signal)>0) signallength = LAG(signallength)+1.
    EXECUTE.

    * get the last/highest number of each run.
    * It's somewhat complicated, but I haven't found a much better idea yet.
    IF (signallength=1) signalbegin = 1.

    SORT CASES BY frame (D).
    IF (signal=1 AND LAG(signal)>0) signallength = LAG(signallength).
    EXECUTE.

    SELECT IF signalbegin=1.

    FREQUENCIES signallength /HISTOGRAM.

在本例中,实际上不需要创建工作副本数据表,因为您可以在执行SELECT IF命令之前使用临时命令,并且不会丢失任何数据。但是,如果您想做进一步的分析,使用数据集副本可能会很有用

您能为您迄今为止尝试的内容添加代码吗?你有什么具体的问题?找到一块1并记录它的中心点。找到1的下一个块,并记录其中心点。这是两个连续的峰值。根据时间差,你可以计算周期、频率、波长等。我可以想几个办法,如何在SPSS中做到这一点,但这些办法取决于你的数据在第一种方式中的结构,以及你最终需要或不需要的结构。你能给我们举一个你的数据的小例子吗?在额外的数据表中存储一次测量中的一次测量的运行长度会有问题吗?@mirirai-我编辑了这篇文章,详细阐述了我的数据格式。我可以附加一个文件吗?@mirirai我在单独的数据表中存储信号长度方面没有问题。我不确定我是否理解在这种情况下如何使用Excel小计功能。我不希望列中的所有1都有一个值,我希望出现的每个1块都有一个值。如果单元格=1,则总和将是有条件的,添加到上面的单元格中。如果单元格=0,则开始新的小计。这种方法的问题是它给了我另一列递增1的数字——我只想要totalsAh!好的,我现在明白了。谢谢这确实给了我每次运行的总数-不幸的是,它以一种非常麻烦的格式显示,它插入了行和文本。如果可能的话,我很想将汇总数据单独列出来。我使用excel 2011 for mac的小计的一个非常糟糕的特性是它需要一个列标题。真的很不幸,因为工作表上还有很多其他数据。当我筛选1个总计时,会发生一件奇怪的事情-右侧列中的小计值都是0,即使它们在筛选之前都是较大的数字。最后,我让它使用粘贴特殊值。非常感谢。出于某种原因,一旦我过滤了我记录的行,我就不能记录宏了。我记录的所有步骤都是将>0小计粘贴到它们自己的列中,但当我运行宏时,宏在过滤后停止执行任何操作。这意味着手动复制筛选的小计列,清除筛选器,然后将小计粘贴到新列中。不知道为什么我不能用宏来做。如果有人知道如何标记每次运行的最高/最后一个实例,请留下一个注释。