1

我正在尝试分析以 120 Hz 收集的一些信号数据。我有 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 秒(我每个文件有数千帧)。我对波形本身不感兴趣 - 我这样做是为了统计目的,以检测长信号和短信号的分布在不同条件下是否存在显着差异。最终,我想要一个可以在频率直方图中表示的信号长度列表(并且频率,我的意思不是波频率,而是出现的次数。

4

2 回答 2

0

“将每个“组”相加以获得每个信号的持续时间”应用小计并在每次更改时:选择您的列表,使用功能:求和并将小计添加到:您希望添加的任何列。

于 2014-09-25T23:32:15.270 回答
0

这是在 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命令TEMPORARY之前运行命令并且不会丢失任何数据。但是,如果您想做一些进一步的分析,使用数据集副本可能会很有用。

于 2014-10-01T00:01:49.240 回答