matlab 微秒 符号,matlab处理csi
使用python調(diào)用matlab API接口進(jìn)行數(shù)據(jù)分析
找到matlab安裝目錄下自帶的setup.py的路徑我的路徑如下
D:\MATLAB\R2018a\extern\engines\python
打開cmd進(jìn)入到剛才找到的路徑
管理員權(quán)限執(zhí)行!!! pyhton setup.py install
具體代碼
1.將csiTool中的matlab文件夾下的文件拷到pycharm的工作目錄下,我的拷出來不行,于是從Github中重新下載了下來,考進(jìn)去成功!
csi_trace=read_bf_file('csi.dat');
csi_entry=csi_trace{1}
timestamp_low: 4 (In the sample trace, timestamp_low is invalid and always 4.)
bfee_count: 72
Nrx: 3
Ntx: 1
rssi_a: 33
rssi_b: 37
rssi_c: 41
noise: -127
agc: 38
perm: [3 2 1]
rate: 256
csi: [1x3x30 double]
timestamp_low:NIC網(wǎng)卡1MHz時(shí)鐘的低32位。它大約4300s(72min)重復(fù)一回。 (從0-2^32需要4300s),時(shí)間戳,相連兩包此值差單位為微秒,通過驗(yàn)證發(fā)現(xiàn)100hz的發(fā)包頻率此差值為10000,20hz的發(fā)包頻率此差值為50000,此參數(shù)可以確定出波形的橫軸時(shí)間。
當(dāng)發(fā)包頻率過大會(huì)出現(xiàn)接收端停止收數(shù)的情況:20Hz正常,200Hz和1000Hz的采樣頻率,收端最多接收一分多鐘的的數(shù)據(jù)(原因是recv函數(shù)接收數(shù)據(jù)阻塞導(dǎo)致)
1、將包長變小后還是有同樣的問題。
2、由數(shù)據(jù)速率引起的,它太高,程序無法處理(可以嘗試設(shè)置非阻塞)
0x4101決定了主機(jī)僅一根天線發(fā)送數(shù)據(jù),因此此處的Ntx值為1,另外采用的是OFDM模式 如果想要收端接收到發(fā)端兩根天線的數(shù)據(jù)(CSI的格式為2×3×30),只需要把第14、15位均設(shè)置為1,即在發(fā)送端的腳本里面設(shè)置為0xC101 注:關(guān)于0x4101的具體說明如下
bfee_count:驅(qū)動(dòng)記錄并發(fā)送到用戶控件的波束測量值的總數(shù)。內(nèi)核和用戶空間中netlink頻道是有損的,可以用該變量來檢測被丟棄的測量值。
Nrx:接收端使用的天線數(shù)量。
Ntx:發(fā)送端使用的天線數(shù)量。
rssi_a, rssi_b, rssi_c:由接收端NIC測量出的RSSI值。
perm:展示NIC如何將3個(gè)接收天線的信號(hào)排列到3個(gè)RF鏈上,上圖中的數(shù)據(jù)表示天線A被發(fā)送到RF鏈A,天線B被發(fā)送到RF鏈B,天線C被發(fā)送到RF鏈C。
rate:發(fā)包頻率。
csi:CSI值
3374094
MATLAB命令
a=[1 2 3;4 5 6] #矩陣
A' #A的共軛轉(zhuǎn)置矩陣
ones(2,3) #一矩陣
b=1:0.1:2 #集合間距為0.1
zeros(2,3) #零矩陣
rand(2,3) #隨機(jī)矩陣,數(shù)值介于0和1之間
randn(2,3) #矩陣(一個(gè)平均值為0的高斯分布,方差或者等于1的標(biāo)準(zhǔn)偏差)
eye(2) #單位陣
hist() #直方圖
size() #矩陣的尺寸
size(A, 1) #矩陣第一維的尺度
length(A) #由于矩陣A是一個(gè)
3×2的矩陣,因此最大的維度應(yīng)該是3,因此該命令會(huì)返回3。
who # 命令,能顯示出工作空間中的所有變量
whos #命令,能更詳細(xì)地進(jìn)行查看
load('featureX.dat') # 加載數(shù)據(jù)文件,變量名等于文件名
clear #命令,刪除所有變量,加變量名刪除特定
save hello.mat v #這個(gè)命令會(huì)將變量v存成一個(gè)叫 hello.mat 的文件,按二進(jìn)制存儲(chǔ)
save hello.txt v -ascii # 這樣就會(huì)把數(shù)據(jù)存成一個(gè)文本文檔,或者將數(shù)據(jù)的 ascii 碼存成文本文檔
鍵入 A(3,2) # 這將索引到 矩陣的 (3,2) 元素。
鍵入A(2,:) #返回第二行的所有元素
A([1 3],:) #取的是A矩陣的第一行和第三行的每一列
A = [A, [100, 101,102]] #這樣做的結(jié)果是在原矩陣的右邊附加了一個(gè)新的列矩陣
A(:) #這是一個(gè)很特別的語法結(jié)構(gòu),意思是把 A中的所有元素放入一個(gè)單獨(dú)的列向量,這樣我們就得到了一個(gè) 9×1 的向量
A.*B #這么做將矩陣 A中的每一個(gè)元素與矩陣 B中的對應(yīng)元素相乘
A.^2 #這將對矩陣中每一個(gè)元素平方
1./A #得到中每一個(gè)元素的倒數(shù)。同樣地,這里的點(diǎn)號(hào)還是表示對每一個(gè)元素進(jìn)行操作。
exp(A) #自然數(shù)e的冪次運(yùn)算
abs(A) #取絕對值
val=max(A) #默認(rèn)情況下max(A)返回的是每一列的最大值,如果你想要找出整個(gè)矩陣A的最大值,你可以輸入max(max(A))
[val, ind] =max(A) #這將返回矩陣中的最大值存入,以及該值對應(yīng)的索引
A<3 #這將進(jìn)行逐元素的運(yùn)算,所以元素小于3的返回1,否則返回0。
find(A<3) #這將告訴我A中的哪些元素是小于3的。
A = magic(3) #magic 函數(shù)將返回一個(gè)矩陣,稱為魔方陣或幻方 (magic squares),它們具有以下這樣的數(shù)學(xué)性質(zhì):它們所有的行和列和對角線加起來都等于相同的值。
[r,c] = find(A>=7) #這將找出所有矩陣中大于等于7的元素,r 和c分別表示行和列
sum(a) #就把 a 中每列所有元素加起來了。
sum(a,2) #求每行的和
prod(a) #prod 意思是product(乘積),它將返回這四個(gè)元素的乘積。
floor(a) #向下四舍五入,因此對于 a中的元素0.5將被下舍入變成0。
ceil(a) #向上四舍五入,所以0.5將上舍入變?yōu)樽罱咏恼麛?shù),也就是1。
type(3) #這通常得到一個(gè)3×3的矩陣
max(rand(3),rand(3)) #這樣做的結(jié)果是返回兩個(gè)3×3的隨機(jī)矩陣,并且逐元素比較取最大值。
max(A,[],1) #這樣做會(huì)得到每一列的最大值。
max(A,[],2) #這將得到每一行的最大值。
sum(sum(A.*eye(9)
hold on #函數(shù)的功能是將新的圖像繪制在舊的之上。
再加上命令xlabel('time'), 來標(biāo)記X軸即水平軸,輸入ylabel('value'),來標(biāo)記垂直軸的值。
legend('sin','cos') #表示這兩條曲線表示的內(nèi)容。
title('myplot') #顯示這幅圖的標(biāo)題。
print(gcf,'-dpng','abc.png') #保存為png格式的圖片到當(dāng)前路徑
squeeze() #用于刪除矩陣中的單一維,對二維矩陣無效。
close會(huì)讓這個(gè)圖像關(guān)掉。
鍵入figure(1); plot(t, y1);將顯示第一張圖,鍵入figure(2); plot(t, y2); 將顯示第二張圖(同時(shí)顯示兩張圖)
subplot(1,2,1),它將圖像分為一個(gè)1*2的格子,也就是前兩個(gè)參數(shù),然后它使用第一個(gè)格子,也就是最后一個(gè)參數(shù)1的意思
axis([0.5 1 -1 1])也就是設(shè)置了軸的范圍。橫軸的范圍調(diào)整至0.5到1,豎軸的范圍為-1到1。
Clf清除一幅圖像。
我有時(shí)用一個(gè)巧妙的方法來可視化矩陣,也就是imagesc(A)命令
我還可以使用函數(shù)colorbar,讓我用一個(gè)更復(fù)雜的命令 imagesc(A),colorbar,colormap gray 它生成了一個(gè)顏色圖像,一個(gè)灰度分布圖,并在右邊也加入一個(gè)顏色條。所以這個(gè)顏色條顯示不同深淺的顏色所對應(yīng)的值。
csi_trace = read_bf_file('csi6.dat');%數(shù)據(jù)讀取
for l=1:1 %取50個(gè)數(shù)據(jù)包的數(shù)據(jù)
csia=get_scaled_csi(csi_trace{l});%提取csi矩陣
for i=1:1 %1個(gè)發(fā)射天線
for j=1:3 %2個(gè)接收天線
for k=1:30 %30個(gè)子載波數(shù)據(jù)
B(i,j,k)=csia(i,j,k);
end
end
end
plot(db(abs(squeeze(B).')))
%squeeze通過移除第一個(gè)單維度將csi變成3*30的矩陣
%db將線性空間變成以十為底的對數(shù)空間
%.'轉(zhuǎn)置得到30*3的矩陣
%plot(Y)如果Y是m×n的數(shù)組,以1:m為X橫坐標(biāo),Y中的每一列元素為Y坐標(biāo),繪制n條曲線
hold on%當(dāng)前軸及圖像保持而不被刷新,準(zhǔn)備接受此后將繪制的圖形,多圖共存
end
legend('RX Antenna A', 'RX Antenna B','RX Antenna C', 'Location', 'SouthEast' );
xlabel('Subcarrier index');
ylabel('SNR [dB]')
hold off;
%get_eff_SNRs() 它接受一個(gè)CSI矩陣作為輸入,并返回一個(gè)線性(冪)空間中有效信噪比值的74矩陣。
%這4列對應(yīng)的有效信噪比使用四種802.11調(diào)制方案,即BPSK/QPSK/16QAM/64QAM。
%7行對應(yīng)于7個(gè)可能的天線選擇,包括3個(gè)天線和1、2或3個(gè)空間流。
%特別是,前3行對應(yīng)于天線A、B或c的單流傳輸,后3行對應(yīng)于天線AB、AC或BC的雙流傳輸。最后一行對應(yīng)于使用所有天線的3流傳輸
總結(jié)
以上是生活随笔為你收集整理的matlab 微秒 符号,matlab处理csi的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 仪表盘怎么调 铃木uy125摩托车_平时
- 下一篇: 前端性能优化篇——浏览器http同域名并