我有5千字節的十六進制數據每秒從一個串口進來。數據是每個讀數16位(2字節)。我需要6個讀數,然後是停止/開始位。原始數據看起來是這樣的:Matlab:需要壓縮一個字符串向量
FF230008FF5800DD00F8000A41FF230008FF5800DE00FD000C41....
我會打破它爲更好地理解:
FF23 0008 FF58 00DD 00F8 000A **41** FF23 0008 FF58 00DE 00FD 000C **41**....
空間是我所需要的數據之間。 **表示開始/停止位。
問題:
我有一個時間打破了串入的部分,我可以使用和情節赫克。我想將字符串壓縮成大小爲[6,長度(數據)]的矩陣。以前的字符串看起來像這樣在我的腦海:
FF23 , 0008 , FF58 , 00DD , 00F8 , 000A
FF23 , 0008 , FF58 , 00DE , 00FD , 000C
....
我的失敗嘗試
for i = 1:(length(Vader)-4)
Luke= Vader(i:i+3);
i = i+4;
end
Luke
,並將其輸出:
00A4
這對於數據集的正確答案我正在看。是的,我將不得不處理停止/開始位,這並不容易。
不過,我想盧克不僅僅是4個字符的集合。我需要的是至少一個向量,而不僅僅是一個字符串。我嘗試這樣做:
HanSolo = floor(length(Vader)/4);
for j = 1:HanSolo
for i = 1:(length(Vader)-4)
Luke(j) = Vader(i:i+3);
i = i+4;
end
j = j+1;
end
Luke
但我只是得到這個錯誤:
??? Subscripted assignment dimension mismatch.
Error in ==> hex_conversion at 19
Luke(j) = Vader(i:i+3);
是,MATLAB,我知道有在尺寸不匹配。那是我想要去做。
問題
從本質上講,之後我減少一個字符串轉換爲載體的,每個字符讓說,我怎麼做一個新的載體,其是盧克(J)=維達(我的濃度:我+3)?
謝謝你的任何和所有的幫助,我很感激。
編輯
我試圖從用戶的算法如下:禁衛軍和它不會工作。 reshape()在這裏不是正確的,因爲我得到的字符串是我從串口獲得的26位可變數字。在這裏看到示例:
30008FF5A00DB00F9000A41
for clarity:
3 0008 FF5A 00DB 00F9 000A **41**
這些彈出不時,因爲這是真實的世界和錯誤比比皆是。
雖然我不是要求錯誤檢查,但我仍然在問如何取一個字符串,將其解析爲4個左右的組,然後將這些塊放入一個向量中。
再次感謝您的任何和所有幫助
你必須告訴盧克真相您的代碼:-)上進行編輯 –