if(++Hum_Analog_Cnt >= HUM_CYCLE) { Hum_Analog_Cnt = 0; }代码优化
时间: 2024-03-16 17:47:14 浏览: 72
上述代码可以优化为:
```c
if (++Hum_Analog_Cnt >= HUM_CYCLE) {
Hum_Analog_Cnt = 0;
}
```
其中,`Hum_Analog_Cnt` 会先自增 1,然后与 `HUM_CYCLE` 进行比较,如果大于等于 `HUM_CYCLE`,则将其重置为 0。这样可以避免使用额外的判断语句,使代码更加简洁。
相关问题
void USART1_Pro(void) { unsigned char buf1[32]; static unsigned char Cnt; if(++Cnt > 20) { Cnt = 0; sprintf(buf1,"H:%d,%d,%d,%d,%dE\r\n",Light_Value,DHT_BUFF.Hum,DHT_BUFF.Temp,Water_Value,CO2_Value); UART1_Send_String(buf1); } if(UART0_Rx_Flag) { UART0_Rx_Flag = 0; // UART0_Send_Nbyte(UART0_Rxd); switch(UART0_Rxd[5]) { case 'A': memset(UART0_Rxd, 0, sizeof UART0_Rxd); //P0 ^= 1<<0; KEY = 1; break; case 'B': memset(UART0_Rxd, 0, sizeof UART0_Rxd); //P0 ^= 1<<1; KEY = 2; break; case 'C': memset(UART0_Rxd, 0, sizeof UART0_Rxd); //P0 ^= 1<<2; KEY = 3; break; case 'D': memset(UART0_Rxd, 0, sizeof UART0_Rxd); //P0 ^= 1<<3; KEY = 4; break; case 'E': memset(UART0_Rxd, 0, sizeof UART0_Rxd); //P0 ^= 1<<3; KEY = 5; break; default : break; } memset(UART0_Rxd, 0, sizeof UART0_Rxd); UART0_Rxd_Index = 0; UART0_Rx_Flag = 0; } }这些代码分别是什么意思,以及UART0_Rxd[5]里面的参数5是什么意思,
这段代码是一个函数,名为USART1_Pro,它包含了两个if语句块。
第一个if语句块是一个计数器,每次函数被调用时Cnt自增,当Cnt大于20时,将Light_Value,DHT_BUFF.Hum,DHT_BUFF.Temp,Water_Value和CO2_Value这些变量的值按照一定格式组装成一个字符串buf1,并通过UART1发送出去。
第二个if语句块判断了一个标志位UART0_Rx_Flag,如果标志位被设置,则对UART0_Rxd[5]进行判断。UART0_Rxd是一个字符数组,[5]表示数组的第6个元素,即判断了接收到的数据的第6个字节。根据不同的字节,执行不同的操作(例如将P0的某个引脚翻转或者更新KEY的值)。最后将UART0_Rxd数组清零,将UART0_Rx_Flag标志位清零,以便下一次接收。
def Data_preprocessing(): #对类别型特征,观察其取值范围及直方图 categorical_features = ['season','mnth','weathersit','weekday'] #数据类型变为object,才能被get_dummies处理 for col in categorical_features: train[col] = train[col].astype('object') X_train_cat = train[categorical_features] X_train_cat = pd.get_dummies(X_train_cat) print('独热编码结果') print(X_train_cat) from sklearn.preprocessing import MinMaxScaler mn_X = MinMaxScaler() numerical_features = ['temp','atemp','hum','windspeed'] temp = mn_X.fit_transform(train[numerical_features]) X_train_num = pd.DataFrame(data=temp, columns=numerical_features, index =train.index) print('数据归一化处理结果') print(X_train_num.head()) # 合并数据 X_train = pd.concat([X_train_cat, X_train_num, train['holiday'], train['workingday']], axis = 1, ignore_index=False) print('X_train.head(): ') print(X_train.head()) # 合并数据 FE_train = pd.concat([train['instant'], X_train, train['yr'],train['cnt']], axis = 1) FE_train.to_csv('FE_day.csv', index=False) #保存数据 print('FE_train.head():') print(FE_train.head()) print(FE_train.info())请解释每一行代码含义
这段代码是一个数据预处理的函数,它包含以下步骤:
1. 首先定义了一个列表`categorical_features`,其中包含了需要进行独热编码的类别型特征。这些特征包括'season'、'mnth'、'weathersit'和'weekday'。
2. 然后将这些类别型特征的数据类型转换为`object`,以便能够被`get_dummies`函数处理。
3. 接着,将转换后的类别型特征数据存储在`X_train_cat`中,并通过`pd.get_dummies`函数对其进行独热编码。这里将输出独热编码的结果。
4. 导入`MinMaxScaler`类,并定义了一个列表`numerical_features`,其中包含了需要进行归一化处理的数值型特征。这些特征包括'temp'、'atemp'、'hum'和'windspeed'。
5. 使用`MinMaxScaler`对数值型特征进行归一化处理,并将处理后的结果存储在`X_train_num`中。这里将输出数据归一化处理的结果。
6. 将独热编码后的特征数据和归一化处理后的数值型特征数据与原始数据集中的'holiday'和'workingday'列进行合并,生成最终的训练数据`X_train`。这里将输出合并后的结果。
7. 再次将原始数据集中的'instant'、'yr'和'cnt'列与合并后的特征数据`X_train`进行合并,生成最终的特征工程训练数据`FE_train`。
8. 将特征工程训练数据`FE_train`保存到名为'FE_day.csv'的文件中。
9. 最后打印出特征工程训练数据`FE_train`的头部和信息。
这段代码的主要功能是将原始数据集进行特征工程处理,包括对类别型特征进行独热编码、对数值型特征进行归一化处理,并将处理后的特征数据与原始数据集合并,生成最终的特征工程训练数据。
阅读全文