我在识别信号时遇到问题。假设信号是准周期信号,周期时间有限。信号的“形状”必须符合某些标准,因此实际算法使用信号处理技术,如滤波,推导信号,寻找最大值和最小值。它在寻找良好信号方面具有良好的速率,但问题是它也检测到错误的形状。
所以我想使用Aritifical Intelligence(主要是神经网络)来克服这个问题。我认为具有一些平均输入的多层网络(信号可以减少)和一个输出可以显示0..1的“匹配”。然而问题是我从来没有做过这样的事情,所以我在寻求帮助,如何实现这样的目标?如何教神经网络以获得预期的结果? (假设我有输入的向量,应该给出1作为输出)
或者这整个想法是一个错误的近似问题?我愿意学习和使用任何学习算法或想法来克服这个问题。
所以这是一个关于测量信号的图(现在值和时间不是问题),你可以看到很多“错误”信号,检测到的信号最多,如上所述。
答案 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,则信号不好。