信号分类 - 用AI识别信号

时间:2012-12-29 13:35:39

标签: artificial-intelligence signal-processing neural-network

我在识别信号时遇到问题。假设信号是准周期信号,周期时间有限。信号的“形状”必须符合某些标准,因此实际算法使用信号处理技术,如滤波,推导信号,寻找最大值和最小值。它在寻找良好信号方面具有良好的速率,但问题是它也检测到错误的形状。

所以我想使用Aritifical Intelligence(主要是神经网络)来克服这个问题。我认为具有一些平均输入的多层网络(信号可以减少)和一个输出可以显示0..1的“匹配”。然而问题是我从来没有做过这样的事情,所以我在寻求帮助,如何实现这样的目标?如何教神经网络以获得预期的结果? (假设我有输入的向量,应该给出1作为输出)

或者这整个想法是一个错误的近似问题?我愿意学习和使用任何学习算法或想法来克服这个问题。

所以这是一个关于测量信号的图(现在值和时间不是问题),你可以看到很多“错误”信号,检测到的信号最多,如上所述。 enter image description here

3 个答案:

答案 0 :(得分:1)

您可以尝试使用Neuroph构建神经网络。你可以从"http://neuroph.sourceforge.net/TimeSeriesPredictionTutorial.html"启发。 另一方面,可以使用傅里叶变换来近似信号。

答案 1 :(得分:1)

您的问题可以广泛回答。您应该考虑对其进行编辑以防止它被关闭。

但无论如何,Matlab有很多内置函数和工具箱来支持人工智能,有很多可用的示例代码,你可以修改和引用它们。你可以在 Matlab FileExchange.

中找到一些

我知道阅读很多关于人工智能的技术论文是一项艰巨的任务,祝你好运!

答案 2 :(得分:1)

您可以尝试一维卷积。因此,基本思路是为每个时间戳记中的每个信号值都标记0:差,1:好。之后,您可以建模

model = Sequential()
model.add(Conv1D(filters=64, kernel_size=3, activation='relu', padding = 'same', input_shape=(1,1)))
model.add(Bidirectional(LSTM(20, return_sequences=True)))
model.add(Conv1D(filters=64, kernel_size=3, activation='relu', padding = 'same'))
model.add(Dropout(0.5))
model.add(Flatten())
model.add(Dense(100, activation='sigmoid'))
model.add(Dense(2, activation='softmax'))

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

训练模型,然后为其提供新信号以进行预测。它将预测给定序列为0和1的值。如果计数0大于计数1,则信号不好。