double sigmoid(double xx) { return (1 / (1 + exp(-xx*0.05))); } void data_receive(void) { while(a==0)//等待数据发送完成 { delay_ms(100); if(a==1)//接收到数据 { if(USART_RX_STA&0x8000) { len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度 r=len; type=0; for(t=0;t<len;t++)//拷贝数据,将字符转换为十进制数 { str[t]=USART_RX_BUF[t]; //printf("%c\n",USART_RX_BUF[t]); } USART_RX_STA=0; a=0; delay_ms(500); break; } } } }
时间: 2024-01-24 22:19:50 浏览: 165
这段代码看起来是在单片机中使用的,可以看出其中包含了串口通信的功能。具体而言,这段代码的功能是接收串口发送过来的数据,并将其转换为十进制数存储到数组 str 中。其中,等待数据发送完成的部分使用了一个 while 循环,每隔 100ms 检查一次是否已经接收到数据。如果接收到数据,则将其保存到数组 str 中,并将变量 type 设为 0。该函数的整体作用是为了实现串口接收功能,需要与其他函数配合使用才能完成完整的串口通信功能。
相关问题
def softmax(self, x): """:param x: 输入数据 :return:返回softmax激活函数值""" return 1/(1+np.exp(-x)) def forward_propagation(self, input_data, weight_matrix, b): """ :param input_data: 输入数据 :param weight_matrix: 权重矩阵 :return: 激活函数后输出的活性值 """ z = np.add(np.dot(weight_matrix, input_data), b) return z, self.softmax(z) def predict(self, input_data, label): print("Begin to predict") #precision = 0 #for i in range(number): z1, a1 = self.forward_propagation(input_data[:].reshape(-1, 1), w1, self.b1) z2, a2 = self.forward_propagation(a1, w2, b2) print("预测值为",np.argmax(a2))转换为c语言
以下是转换为 C 语言后的代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define ROWS 1
#define COLS 784
#define HIDDEN 256
#define LABELS 10
double sigmoid(double x) {
return 1 / (1 + exp(-x));
}
void softmax(double *x, int len) {
double max = x[0];
for (int i = 1; i < len; i++) {
if (x[i] > max) {
max = x[i];
}
}
double sum = 0.0;
for (int i = 0; i < len; i++) {
x[i] = exp(x[i] - max);
sum += x[i];
}
for (int i = 0; i < len; i++) {
x[i] /= sum;
}
}
void forward_propagation(double *input_data, double *weight_matrix1, double *b1, double *weight_matrix2, double *b2, double *a1, double *a2) {
double z1[HIDDEN];
for (int i = 0; i < HIDDEN; i++) {
z1[i] = 0.0;
for (int j = 0; j < COLS; j++) {
z1[i] += weight_matrix1[i * COLS + j] * input_data[j];
}
z1[i] += b1[i];
a1[i] = sigmoid(z1[i]);
}
for (int i = 0; i < LABELS; i++) {
a2[i] = 0.0;
for (int j = 0; j < HIDDEN; j++) {
a2[i] += weight_matrix2[i * HIDDEN + j] * a1[j];
}
a2[i] += b2[i];
}
softmax(a2, LABELS);
}
int predict(double *input_data, double *weight_matrix1, double *b1, double *weight_matrix2, double *b2) {
double a1[HIDDEN], a2[LABELS];
forward_propagation(input_data, weight_matrix1, b1, weight_matrix2, b2, a1, a2);
int prediction = 0;
double max = a2[0];
for (int i = 1; i < LABELS; i++) {
if (a2[i] > max) {
max = a2[i];
prediction = i;
}
}
return prediction;
}
int main() {
double input_data[ROWS * COLS];
double weight_matrix1[HIDDEN * COLS];
double b1[HIDDEN];
double weight_matrix2[LABELS * HIDDEN];
double b2[LABELS];
// 读取数据和模型参数
// ...
// 进行预测
int prediction = predict(input_data, weight_matrix1, b1, weight_matrix2, b2);
printf("预测值为 %d\n", prediction);
return 0;
}
阅读全文
相关推荐















