MIN_MATCH

以前遇到的一个bug,这里有相关说明


转自:http://blog.youkuaiyun.com/l0605020112/article/details/7755485


Android上默认的号码匹配位数是7位,也就是说从右向左算起,如果两个号码有7位是匹配的,那么就认为是相同的号码。如+86 1234567和01234567是相同的号码。
external\sqlite\android\OldPhoneNumberUtils.cpp中

[cpp]  view plain copy
  1. static int MIN_MATCH = 7; //修改成你想要的数字  
该数字在函数phone_number_compare_loose函数中使用。这个函数其实就是号码匹配的真正函数。
framewoeks\base\telephony\java\android\telephony\PhoneNumberUtils.java,其中使用到的MIN_MATCH同样需要修改。
这两个里面的值进行修改就行。

``` # Iterate over each match for match in matches: # Extract the variable name var_name_match = re.search(r'(\w+)\s*=\s*AUTOSAR\.Parameter;', match) if var_name_match: var_name = var_name_match.group(1) # Extract DataType data_type_match = re.search(rf'{var_name}\.DataType\s*=\s*\'([A-Za-z0-9(),.-]+)\';', match) data_type = data_type_match.group(1) if data_type_match else '' # Extract Min and Max values min_match = re.search(rf'{var_name}\.Min\s*=\s?(-?\d+(\.\d+)?);', match) max_match = re.search(rf'{var_name}\.Max\s*=\s?(-?\d+(\.\d+)?);', match) if min_match: min_value = float(min_match.group(1)) else: min_value = None if max_match: max_value = float(max_match.group(1)) else: max_value = None # Determine lsb value based on DataType if data_type.startswith('NT.'): lsb_value = NT_DataTable[data_type]['LSB'] offset = NT_DataTable[data_type]['OFFSET'] elif data_type.startswith('fixdt'): lsb_value = float(data_type.split(',')[2]) offset = float(data_type.split(',')[3].split(')')[0]) else: lsb_value = float(1) offset = float(0) if min_value is None and (len(data_type) > 0): min_value = DEFAULT_TABLE[data_type]['Min'] if max_value is None and (len(data_type) > 0): max_value = DEFAULT_TABLE[data_type]['Max'] # Add the variable to the result dictionary result[var_name] = { 'DataType': data_type, 'lsb': lsb_value, 'Min': min_value, 'Max': max_value, 'Offset': offset # Placeholder value, update this based on specific requirements if needed }```分析这一段代码输出注释
最新发布
03-24
逐行详细解释: void DstExistenceFusion::UpdateWithoutMeasurement(const std::string &sensor_id, double measurement_timestamp, double target_timestamp, double min_match_dist) { SensorObjectConstPtr camera_object = nullptr; if (common::SensorManager::Instance()->IsCamera(sensor_id)) { camera_object = track_ref_->GetSensorObject(sensor_id); UpdateToicWithoutCameraMeasurement(sensor_id, measurement_timestamp, min_match_dist); } SensorObjectConstPtr lidar_object = track_ref_->GetLatestLidarObject(); SensorObjectConstPtr camera_object_latest = track_ref_->GetLatestCameraObject(); SensorObjectConstPtr radar_object = track_ref_->GetLatestRadarObject(); if ((lidar_object != nullptr && lidar_object->GetSensorId() == sensor_id) || (camera_object_latest != nullptr && camera_object_latest->GetSensorId() == sensor_id) || (radar_object != nullptr && radar_object->GetSensorId() == sensor_id && lidar_object == nullptr && camera_object_latest == nullptr)) { Dst existence_evidence(fused_existence_.Name()); double unexist_factor = GetUnexistReliability(sensor_id); base::ObjectConstPtr obj = track_ref_->GetFusedObject()->GetBaseObject(); double dist_decay = ComputeDistDecay(obj, sensor_id, measurement_timestamp); double obj_unexist_prob = unexist_factor * dist_decay; existence_evidence.SetBba( {{ExistenceDstMaps::NEXIST, obj_unexist_prob}, {ExistenceDstMaps::EXISTUNKNOWN, 1 - obj_unexist_prob}}); // TODO(all) hard code for fused exist bba const double unexist_fused_w = 1.0; double min_match_dist_score = min_match_dist; // if (!sensor_manager->IsCamera(sensor_id)) { // min_match_dist_score = std::max(1 - min_match_dist / // options_.track_object_max_match_distance_, 0.0); // } ADEBUG << " before update exist prob: " << GetExistenceProbability() << " min_match_dist: " << min_match_dist << " min_match_dist_score: " << min_match_dist_score; fused_existence_ = fused_existence_ + existence_evidence * unexist_fused_w * (1 - min_match_dist_score); ADEBUG << " update without, EXIST prob: " << GetExistenceProbability() << " 1 - match_dist_score: " << 1 - min_match_dist_score << " sensor_id: " << sensor_id << " dist_decay: " << dist_decay << " track_id: " << track_ref_->GetTrackId(); } UpdateExistenceState(); }
06-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值