Diff
checker
文本
文本
圖像
文檔
Excel
文件夾
Legal
Enterprise
桌面版
定價
登入
下載 Diffchecker 桌面版
比較文本
尋找兩個文字檔案之間的差異
工具
歷史
即時編輯器
隱藏空白變更
摺疊未變更行
關閉換行
檢視
拆分
統一
比對精度
智能
單詞
字符
文字樣式
變更外觀
語法突出顯示
選擇語法
忽略
文字轉換
前往第一個差異
編輯輸入
Diffchecker Desktop
執行Diffchecker最安全的方式。取得Diffchecker桌面應用程式:您的差異永遠不會離開您的電腦!
取得桌面版
https://codereview.stackexchange.com/a/253314/30419
建立於
6 年前
差異永不過期
清除
匯出
分享
解釋
55 刪除
行
總計
刪除
字符
總計
刪除
要繼續使用此功能,請升級到
Diff
checker
Pro
查看價格
55 行
全部複製
52 新增
行
總計
新增
字符
總計
新增
要繼續使用此功能,請升級到
Diff
checker
Pro
查看價格
55 行
全部複製
複製
已複製
複製
已複製
#define
queueSize
16
let
queueSize
=
16
複製
已複製
複製
已複製
#define
increaseIndex(
x) ({x++; if(x >= queueSize) x = 0;})
func
increaseIndex(
_ x: Int) -> Int {
let x = x + 1
return x < queueSize
? x
: 0
}
複製
已複製
複製
已複製
int
rssiArray
[queueSize]
=
{0};
var
rssiArray
=
[0]
int
sortRssi
[queueSize]
=
{0};
var
sortRssi
=
[0]
int
rssiIndex = 0
;
var
rssiIndex = 0
複製
已複製
複製
已複製
static double
getDistance(
d
ouble
rssi, int
txPower
)
{
private func
getDistance(
rssi: D
ouble
,
txPower
: Int) -> Double?
{
if (
rssi == 0
) {
return
rssi == 0
return -1.0; // if we cannot determine accuracy, return -1.
? nil
}
:
pow(10, (
D
ouble
(
txPower
)
- rssi) /
20)
return
pow(10, (
(d
ouble
)
txPower
- rssi) /
(10 * 2));
}
}
複製
已複製
複製
已複製
static double calculateAccuracy(double rssi, int txPower) {
private func calculateAccuracy(rssi: Double, txPower: Int) -> Double? {
if (rssi == 0) {
guard rssi != 0 else {
return -1.0; // if we cannot determine accuracy, return -1.
return
nil
}
double ratio = rssi * 1.0 / txPower;
if (ratio < 1.0) {
return
pow(ratio, 10);
} else {
double accuracy = (0.89976) * pow(ratio, 7.7095) + 0.111;
return accuracy;
}
}
複製
已複製
複製
已複製
let ratio = rssi * (1 / Double(txPower))
return ratio < 1
? pow(ratio, 10)
: (0.89976) * pow(ratio, 7.7095) + 0.111
}
}
複製
已複製
複製
已複製
int cmp
func
(const void * a, const void * b)
{
private
func
calculateAverage() -> Double
{
return
( *(int*)a - *(int*)b );
sortRssi = Array(rssiArray.sorted(by: >).dropFirst(3))
return
sortRssi.averaged(while: { $0 != 0 })
}
}
複製
已複製
複製
已複製
static double calculateAverage()
{
double
average
= 0;
extension Collection where Element: BinaryInteger
{
int i = 0;
func
average
d(while allowedPrefixPredicate: (Element) -> Bool) -> Double {
int drop = 3;
lazy
memcpy(sort_rssi, rssi_array, queueSize * sizeof(int));
.prefix(while: allowedPrefixPredicate)
qsort(sort_rssi, queueSize, sizeof(int), cmpfunc);
.map(Double.init)
for (i = 0; i < queueSize - drop; ++i) {
.reduce(into: 0, +=)
if(sort_rssi[i + drop] == 0) break;
/ Double(count)
average += sort_rssi[i];
}
}
複製
已複製
複製
已複製
return average / i;
}
}
// For adding new rssi we can use this code:
// For adding new rssi we can use this code:
複製
已複製
複製
已複製
rssiArray[rssiIndex] = rssi
;
rssiArray[rssiIndex] = rssi
increaseIndex(rssiIndex)
;
rssiIndex =
increaseIndex(rssiIndex)
double
meanRssi = calculateAverage()
;
let
meanRssi = calculateAverage()
已保存差異
原始文本
開啟檔案
#define queueSize 16 #define increaseIndex(x) ({x++; if(x >= queueSize) x = 0;}) int rssiArray[queueSize] = {0}; int sortRssi[queueSize] = {0}; int rssiIndex = 0; static double getDistance(double rssi, int txPower) { if (rssi == 0) { return -1.0; // if we cannot determine accuracy, return -1. } return pow(10, ((double) txPower - rssi) / (10 * 2)); } static double calculateAccuracy(double rssi, int txPower) { if (rssi == 0) { return -1.0; // if we cannot determine accuracy, return -1. } double ratio = rssi * 1.0 / txPower; if (ratio < 1.0) { return pow(ratio, 10); } else { double accuracy = (0.89976) * pow(ratio, 7.7095) + 0.111; return accuracy; } } int cmpfunc (const void * a, const void * b) { return ( *(int*)a - *(int*)b ); } static double calculateAverage() { double average = 0; int i = 0; int drop = 3; memcpy(sort_rssi, rssi_array, queueSize * sizeof(int)); qsort(sort_rssi, queueSize, sizeof(int), cmpfunc); for (i = 0; i < queueSize - drop; ++i) { if(sort_rssi[i + drop] == 0) break; average += sort_rssi[i]; } return average / i; } // For adding new rssi we can use this code: rssiArray[rssiIndex] = rssi; increaseIndex(rssiIndex); double meanRssi = calculateAverage();
更改後文本
開啟檔案
let queueSize = 16 func increaseIndex(_ x: Int) -> Int { let x = x + 1 return x < queueSize ? x : 0 } var rssiArray = [0] var sortRssi = [0] var rssiIndex = 0 private func getDistance(rssi: Double, txPower: Int) -> Double? { return rssi == 0 ? nil : pow(10, (Double(txPower) - rssi) / 20) } private func calculateAccuracy(rssi: Double, txPower: Int) -> Double? { guard rssi != 0 else { return nil } let ratio = rssi * (1 / Double(txPower)) return ratio < 1 ? pow(ratio, 10) : (0.89976) * pow(ratio, 7.7095) + 0.111 } private func calculateAverage() -> Double { sortRssi = Array(rssiArray.sorted(by: >).dropFirst(3)) return sortRssi.averaged(while: { $0 != 0 }) } extension Collection where Element: BinaryInteger { func averaged(while allowedPrefixPredicate: (Element) -> Bool) -> Double { lazy .prefix(while: allowedPrefixPredicate) .map(Double.init) .reduce(into: 0, +=) / Double(count) } } // For adding new rssi we can use this code: rssiArray[rssiIndex] = rssi rssiIndex = increaseIndex(rssiIndex) let meanRssi = calculateAverage()
尋找差異