1

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

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

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

所以这里有一个关于测量信号的图(现在不关心值和时间),你可以看到很多“错误”的信号,如上所述,检测到的最多的信号是好的。 在此处输入图像描述

4

3 回答 3

1

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

于 2012-12-29T21:32:49.677 回答
1

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

但不管怎样,Matlab内置了很多支持人工智能的函数和工具箱,有很多示例代码可供您修改和参考。您可以在Matlab FileExchange中找到一些。

而且我知道阅读大量人工智能技术论文是一项艰巨的任务,祝你好运!

于 2013-01-03T03:05:21.577 回答
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 的计数,则信号不好。

于 2020-02-27T00:57:42.653 回答