1. 程式人生 > >Android sensor資料通過matlab實時顯示波形圖

Android sensor資料通過matlab實時顯示波形圖

前兩年在我們平臺上除錯VR Sensor時候,做的一個輔助工具,在此做個記錄。

當時有客戶會報一些VR app中sensor存在異常的問題,但若是更換其它的VR app又沒有類似問題。

如何確認是否我們sensor存在問題呢?如果只是把sensor資料打印出來看,很難看出問題來。

為此,我用matlab寫了段簡單的程式碼,把樣機上的sensor資料打印出來送給matlab實時顯示,效果還可以,如下圖所示:
這裡寫圖片描述

原始碼在此:

clc
clear
% 只顯示10秒資料
xrange=[-9 1];
%yrange=[-20 +20];
yrange=[-1 +1];
data_rate_hz=16
disp_rate_hz=10 step=1/data_rate_hz % 顯示資料間隔 disp_interval=data_rate_hz/disp_rate_hz % 只緩衝30秒的資料,過多的緩衝資料會導致系統無法及時處理資料,導致響應慢。 data_cache = 30*data_rate_hz; in_file = '/tmp/matlab_pipe' % 建立PIPE, 其它程序可通過該管道把資料傳送進來 !rm -rf /tmp/matlab_pipe !mknod /tmp/matlab_pipe p !adb shell logcat -c; adb shell logcat -s MPL | grep "BIAS:"
> /tmp/matlab_pipe & t=[0] m=[0; 0; 0] p = plot(t,m,... 'EraseMode','background','MarkerSize',5); axis([xrange(1) xrange(2) yrange(1) yrange(2)]); grid on; i=0; try fd = fopen(in_file); while(true) %tic %toc i = i+1; s = fgetl(fd); if (strncmp(s, 'D/MPL'
, 5) == false) fprintf('-- skip: %s\n\n', s) continue; end %disp(s); S = regexp(s, '\s+', 'split'); x = str2double(char(S(4))); y = str2double(char(S(5))); z = str2double(char(S(6))); %fprintf('%+f %+f %+f %s\n', x, y, z, char(S(9))); t(end+1)=step*i; m(:,end+1)=[x; y; z]; if (mod(i, data_cache) == 0) t = []; m = []; end t(end+1)=step*i; m(:,end+1)=[x; y; z]; if (mod(i, disp_interval) == 0) %t=[t step*i]; %m=[m [x; y; z]]; %t(end+1)=step*i; %m(:,end+1)=[x; y; z]; set(p(1),'XData',t,'YData',m(1,:)) set(p(2),'XData',t,'YData',m(2,:)) set(p(3),'XData',t,'YData',m(3,:)) %drawnow xrange(1)=xrange(1)+step*disp_interval; xrange(2)=xrange(2)+step*disp_interval; %{ if (x<yrange(1)) yrange(1) = x+1; end if (y<yrange(1)) yrange(1) = y+1; end if (z<yrange(1)) yrange(1) = z+1; end if (x>yrange(2)) yrange(2) = x+1; end if (y>yrange(2)) yrange(2) = y+1; end if (z>yrange(2)) yrange(2) = z+1; end %} axis([xrange(1) xrange(2) yrange(1) yrange(2)]); drawnow %pause(0.1); end end fclose(fd); catch err disp('Exit Sensor Monitor'); fclose(fd); !rm -rf /tmp/matlab_pipe !adb shell busybox pkill logcat end

相關推薦

Android sensor資料通過matlab實時顯示波形

前兩年在我們平臺上除錯VR Sensor時候,做的一個輔助工具,在此做個記錄。 當時有客戶會報一些VR app中sensor存在異常的問題,但若是更換其它的VR app又沒有類似問題。 如何確認是否我們sensor存在問題呢?如果只是把sensor資料打印出

MATLAB利用串列埠接收資料,並實時顯示圖形

matlab讀取串列埠資源總結:一、matlab讀取串列埠資料,並顯示實時圖形:點選這裡開啟二、使用matlab進行串列埠除錯的2中方法:點這裡開啟三、matlab讀取微控制器串列埠資料並顯示出來(m語

關於使用CCSV5利用斷點匯入外部資料在Graph中顯示波形的實踐

關於使用CCSV5利用斷點匯入外部資料在Graph中顯示波形的實踐 關於**.dat**檔案的介紹 關於DSP中定點浮點數的表示與轉換 關於補碼的計算 .dat檔案不是一種標準的檔案格式,許多軟體都在使用這個副檔名,但是各個軟體對.dat檔案的定

Js動態追加行,並將內容儲存到資料庫,並取出資料通過js動態顯示

實現步驟講解: 首先需要在html頁面建立一個table表格和一個動態新增行的按鈕 <input type="button" onclick="addT()" value="新增" /> 然後實現表格中追加行的js方法 //新增動態行(可在實現的列中新增相應的滑鼠事

android執行緒實現:實時顯示所連線的wifi訊號強度(程式碼帶註釋)

首先:AndroidManifest.xml檔案中加一行:獲取許可權 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> layout.xml檔案中的程式碼: <Li

獲取伺服器資料通過Gson解析顯示Listview上

之前寫了一篇博文是獲取伺服器資料並解析顯示到listview上,上次使用的解析是通過jsonarray和jsonobject完成,解析json的資料還是可以,但是發現解析複雜點的資料真的很麻煩,然後查了一下Gson的解析方式寫了一個demo,發現省事了許多.上程式碼: 效果

資料通過串列埠或USB以1秒間隔實時發給另外一臺計算機,在另外一臺計算機上以同樣方式顯示條形或趨勢曲線。

前面兩篇文章已經講過了隨機資料產生,繪製直方圖,趨勢圖,資料儲存,串列埠傳送。接下來則是串列埠接收部分的程式。 注意:如果在一臺電腦上進行除錯,需要用虛擬串列埠軟體把串列埠1,2連結起來。 // 作業Dlg.cpp : 實現檔案 // #includ

三軸力感測器資料MATLAB實時顯示

演示視訊: 使用了嵌入式PAL Board作為資料採集裝置,搭載ADI公司的ADXL345三軸力感測器。使用串列埠RS232傳輸資料到MATLAB,MATLAB建立串列埠物件,每上來一組資料就呼叫一次回撥函式。回撥函式實現繪圖的功能。Enjoy! Display th

Android攝像頭採集的視訊資料流如何通過Socket實時傳送到目標服務端

分兩塊: 1.取得攝像頭採集的視訊流 2.傳送到伺服器端 protected MediaRecorder mMediaRecorder; private LocalServerSocket mLss = null; private LocalSock

基於matlab的音訊波形實時採集顯示 v0.1

robj = audiorecorder(44100,16,1); %設定取樣頻率、取樣位數、通道數 recordblocking(robj,1); %採集初步資料(1s長度) rdata = getaudiodata(robj); %

《gnuplot》Java計算出三角函式的資料通過gnuplot作出波形

一、用Java計算資料     使用Java程式計算出sin、cos、tan三個三角函式在-360° ~ 360°角度範圍內每一度所對應的數值。     程式中需要用到的Java中Math類方法簡介: 方法 功能

關於arduino通過串列埠傳送到processing的資料混亂(錯誤\顯示不正確)的問題解答

最近的教學中,已經開始使用processing和arduino進行串列埠通訊的互動,使用中發現有的同學遇到了arduino傳送給processing的資料存在顯示不正確,甚至混亂的現象。這裡給予統一解釋。 arduino程式碼完成的工作是將模擬訊號口讀入模擬資料,然後經過map對映為0到

MAC Android Studio用android手機進行除錯並實時同步在電腦上顯示(錄屏gif體積小清晰)

第一步:Mac電腦使用Android Studio進行真機除錯 第二步:Vysor:一款連線Android裝置和Chrome的神奇工具! 第三步:翻牆(藍燈)下載Vysor chrome外掛 第四步:Vysor chrome外掛破解 1.9.3 (Mac) 破解可以顯示更高清的

通過Matlab 使用 FFT 分析週期性資料

傅立葉變換可以用來分析資料中的變化 前言:天文學家使用蘇黎世太陽黑子相對數將幾乎 300 年的太陽黑子的數量和大小製成表格。對大約 1700 至 2000 年間的蘇黎世數繪圖。 load sunspot.dat year = sunspot(:,1); relNums =

四軸飛行器1.4 姿態解算和Matlab實時姿態顯示

MPU6050資料讀取出來後,經過一個星期的努力,姿態解算和在matlab上的實時顯示姿態終於完成了。 1:完成matlab的串列埠,並且實時通過波形顯示資料 2:新增RTT檢視CPU使用率的擴充套件功能,MPU6050讀取資料的優化 3:四元素表示的座標變

Android(或者Java)通過HttpUrlConnection向SpringMVC請求資料資料繫結)

問題描述     當我們使用SpringMVC作為服務端的框架時,有時不僅僅要應對web前端(jsp、javascript、Jquery等)的訪問請求,有時還可能需要響應Android和JavaSE(桌面應用)這些客戶端的請求,因此,除了web使用form表單

Android開發,GPS獲取實時時間並轉為北京時間,定位資訊,海拔高度,並進行顯示

在轉載的基礎上增加一些內容,主要是時間的轉換所以這裡直接先把重點列出來: (GPS時間轉為本地時間): @SuppressLint("SimpleDateFormat") private static String getGpsLoaalTime(long gpsTim

Android客戶端通過TCP接收伺服器端傳送的資料

引言   因為我確實不懂TCP通訊這一塊兒,最近專案中要實現客戶端接收伺服器端傳送過來的資料(這個資料是int型的,範圍是0~360,而且伺服器端用C語言寫的,每一秒傳送一次,客戶端只需要不斷接收就好了),很開心的用BufferedReader讀取資料,結果發現一直讀取不到資

matlab資料型別及影象顯示

1、uint8與double     double函式只是將讀入影象的uint8資料轉換為double型別,一般不使用;常用的是im2double函式,將 uint8影象轉為double型別,範圍為0-1,如果是255的影象,那麼255轉為1,0還是0,中間的做相應改變

Android 實現資料的列表顯示

介面操作: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="