資源簡介
(2012年電子設計大賽 D題)二維平面TDOA算法實現,VC仿真通過精度;0.001mm,移植到 MSP430F149,算法精度:0.01mm。附帶說明文檔,詳細注解, 方便大家繼續研習

代碼片段和文件信息
//******************************************************************
//(2012年電子設計大賽)D題:聲音定位系統?(二維平面TDOA定位算法)?算法測試
//?描述:?以題目所標注的零點為坐標原點,四角各坐標則可分別標號并表示為?
//??????????
// ??2.(0350)----------------------?3.(500350)
//
//????????????|?????????????????????????????????|
//????????????|?????????????????????????????????|
//????????????|??????????發生源(xy)??????????|
//????????????|?????????????????????????????????|
//????????????|?????????????????????????????????|
//????????????|?????????????????????????????????|???
//
//????????????1.(0??0)------------------------4.(5000)
//?參數:t1?表示聲音傳播到接受點12之間的時間差??
//???????t2?表示聲音傳播到接受點13之間的時間差
//???????c??表示理論中的聲速
//???????Q??宏定義為?π的值
//?調試驗證環境:?運行仿真環境:VC++?6.0??(精度0.01mm)
//????????????????核心代碼移植系統環境:?IAR5.4?MSP430F149?(精度:0.1mm)
//?作者:小浣熊??qcxycwf@163.com
//?時間:2012.8.2?版本?V1.0?(驗證通過)
//?參考文獻:1.《基于到達時間差的平面聲無源定位技術研究》
//???????????2.《基于TDOA定位技術的仿真研究》
//???????????3.《聲源定位實驗?——?一個具有明確應用背景和前沿技術特點的綜合性實驗》
//*********************************************************************
#include?“stdio.h“
#include?“math.h“
#define??c??340????//定義聲速為340M/S
//測試點1(這里取點當聲音傳播到1.2點的時間差為0,且聲音傳播到1.4點的時間差為0)
#define??t1?0//測試假設??這個發聲部分在最特殊的中點
#define??t2?0
//測試點?2??坐標點(110110),先算出時間差,然后驗證算法
//(這里取點當聲音傳播到1.2點的時間差為0.000318930,且聲音傳播到1.4點的時間差為0.000733636)
//#define?t1?0.000318930
//#define?t2?0.000733636
#define??Q?3.141592654
//坐標點定位系統(注意這里是以?內部基準坐標?而建立)
void?main()
{
float?x1y1x2y2temp;
//分別表示以1.(00)為原點建立的坐標系下,另外兩個定位點基準點的坐標
float?U; //計算聲源?極坐標?角度的中間變量
float?H; //聲源的?極坐標?(角度)
float?r; //聲源距離坐標原點的距離
float?ABD; //分別用來存放數據?ABD?對應各自的算法公式
x1?=?0;
y1?=?0.35;?//(X1Y1)即?基準點2
x2?=?0.5;??//(X2Y2)即?基準點4
y2?=?0;?
A?=?x2*(x1*x1+y1*y1-c*t1*c*t1)?-?x1*(x2*x2+y2*y2-c*t2*c*t2);
B?=?y2*(x1*x1+y1*y1-c*t1*c*t1)?-?y1*(x2*x2+y2*y2-c*t2*c*t2);
D?=?c*t1*(x2*x2+y2*y2-c*t2*c*t2)?-?c*t2*(x1*x1+y1*y1-c*t1*c*t1);
U?=?atan(B/A);//求解U的角度(換算成度數了)
printf(“所求的中間變量?A?為:%f\n“A);
printf(“所求的中間變量?B?為:%f\n“B);
printf(“所求的中間變量?D?為:%f\n“D);
printf(“所求的角度?U?為:%f°\n“U*180/Q);//(換成了度數)
temp?=?D/sqrt(A*A+B*B);//把這個數據算出來
printf(“所求的中間變量?temp?為:%f\n?“temp);
H?=?acos(D/sqrt(A*A+B*B))+U;//測得角度?H(也就是聲源的角度)
r?=?fabs((x1*x1+y1*y1-c*t1*c*t1)/(2*(x1*cos(H)+y1*sin(H)+c*t1)));//絕對值函數(求解距離)
printf(“\n\n\n\n聲源與坐標原點之間的距離r為:%f?米,與X軸縮成角度角度?H?為:%f°\n\n“rH*180/Q);
//顯示坐標
printf(“聲源的的橫坐標X為:%f?mm?縱坐標Y為:?%f?mm\n\n“r*cos(H)*1000r*sin(H)*1000);
printf(“聲源坐標為(%f%f)\n\n“r*cos(H)*1000r*sin(H)*1000);
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2012-08-09?16:55??2012年電子設計?D題算法\
?????目錄???????????0??2012-08-06?09:41??2012年電子設計?D題算法\Debug\
?????文件????????5787??2012-08-09?16:55??2012年電子設計?D題算法\Debug\TDOA.obj
?????文件???????33792??2012-08-09?16:55??2012年電子設計?D題算法\Debug\vc60.idb
?????文件???????45056??2012-08-09?16:55??2012年電子設計?D題算法\Debug\vc60.pdb
?????文件??????204839??2012-08-09?16:55??2012年電子設計?D題算法\Debug\算法.exe
?????文件??????247440??2012-08-09?16:55??2012年電子設計?D題算法\Debug\算法.ilk
?????文件??????175516??2012-08-06?02:00??2012年電子設計?D題算法\Debug\算法.pch
?????文件??????459776??2012-08-09?16:55??2012年電子設計?D題算法\Debug\算法.pdb
?????文件?????????411??2012-08-06?07:12??2012年電子設計?D題算法\resource.h
?????文件???????16608??2012-08-06?07:25??2012年電子設計?D題算法\sc
?????文件????????1447??2012-08-06?07:12??2012年電子設計?D題算法\sc
?????文件????????3130??2012-08-09?16:55??2012年電子設計?D題算法\TDOA.c
?????文件??????155131??2012-08-06?00:18??2012年電子設計?D題算法\基于TDOA定位技術的仿真研究.pdf
?????文件???????80304??2012-08-06?00:06??2012年電子設計?D題算法\基于到達時間差的平面聲無源定位技術研究(1).pdf
?????文件??????128016??2012-08-06?01:45??2012年電子設計?D題算法\聲源定位實驗_一個具有明確應用背景和前沿技術特點的綜合性實驗.pdf
?????文件????????4258??2012-08-06?07:12??2012年電子設計?D題算法\算法.dsp
?????文件?????????516??2012-08-06?01:58??2012年電子設計?D題算法\算法.dsw
?????文件???????41984??2012-08-09?16:55??2012年電子設計?D題算法\算法.ncb
?????文件???????48640??2012-08-09?16:55??2012年電子設計?D題算法\算法.opt
?????文件????????1733??2012-08-09?16:55??2012年電子設計?D題算法\算法.plg
評論
共有 條評論