[英]How do I format this data read from a serial port in MATLAB?
我正在嘗試通過MATLAB將數字傳感器連接到我的計算機。
我首先向傳感器發送數據請求,然后傳感器回復六字節流。
MATLAB讀取傳感器如下:
data1 = fscanf(obj1, '%c', 6);
我確切地知道數據的內容應該是什么,但我不知道如何讀取MATLAB生成的數據包中的數據。
數據包( data1
)只是6個字節,但如何作為整數訪問每個單獨的元素?
我以前從未接觸過MATLAB編程,所以我有點迷失。
附帶問題: MATLAB的數據格式%c
, %s
, %c\\n
和%s\\n
是什么意思? 我試着尋找它,但我找不到任何東西。
格式說明符%c
表示FSCANF正在讀取六個字符。 您應該能夠使用DOUBLE函數將這些字符轉換為整數值:
data1 = double(data1);
現在data1
應該是一個包含整數值的六元素數組。 您可以通過索引到數組來訪問每個:
a = data1(1); %# Gets the first value and puts it in a
如果要組合data1
的值對,使得一個值表示數字的最高8位,而一個值表示最低的8位,則以下內容應該起作用:
a = int16(data1(1)*2^8+data1(2));
上面使用data1(1)
作為高位, data1(2)
作為低位,然后將結果轉換為INT16類型。 您也可以不接受對INT16的調用,只將結果保留為DOUBLE類型(它存儲的值仍然是整數)。
格式說明符%s
用於讀取字符串,直到遇到空格為止。 格式說明符在我上面鏈接的FSCANF文檔中討論。
您可以使用來自MATLAB File Exchange的AJ Johnson的cstruct 。 這允許您指定與您的字符包對應的C語言數據結構。 然后,一個函數調用將字符(字節)轉換為MATLAB數據類型。 如果數據格式發生變化,這是快速且可維護的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.