我有一個連接到Arduino的MPU6050帶有多個記錄的* .txt文件。如何創建一個從滿足邏輯條件的矩陣中提取每個原始的子矩陣?
我可以識別何時創建新記錄,因爲列時間從低於前一個(從不爲0)的隨機值重新啓動。
該文件是包含爲了時間NX7,AX,AY,AZ,GX,GY,GZ
我試圖提取從單個矩陣第m子記錄,所以我定義的邏輯如果。
- 如果時間i>時間i + 1跟蹤原始矩陣的位置並將其存儲在子矩陣(rangematrix)中,則此邊界值。
- 從rangematrix創建一組子矩陣(子矩陣的總數將是[大小(rangematrix,1)-1]。
我有一個土木工程師背景和我是用Matlab一個小白。
感謝您的時間,感謝您的耐心。
我試着用下面的代碼來解決這個問題,但我認爲是唯一的垃圾。
%Open the file
filename= uigetfile ('.txt');
fileID = fopen (filename);
logmpu6050 =csvread(filename);
fclose (fileID);
n=length(logmpu6050);
%Count every time i>i+1 where i is the i,1 element of my dataset
for i=1:n-1
%Save the data of the i raw every time happens i>i+1
if logmpu6050(i,1)>logmpu6050(i+1,1);
rangematrix(i,:)= logmpu6050(i,:);
end
end
% Create a new sets of matrices from boundary values
我也讀了很多關於棧BU問題T I沒有找到解決辦法:
MATLAB: extract every nth element of vector
Extract large Matlab dataset subsets
MATLAB: Extract multiple parts of a matrix without using loops
MATLAB: Extracting elements periodically
Extract data from MATLAB matrix without for-loop
How to extract a vector from a large matrix by index in MATLAB?
How to extract a part of a matrix with condition in Matlab
謝謝,我會試試:) –
爲什麼你使用最後,如果沒有if else語句? 如果我使用'rangematrix = logmpu6050(diff(logmpu6050(:1))<0,:);'我可以知道這是什麼時候發生的,並且我有一個5X7的矩陣和邊界值。如果我使用'rangematrix = logmpu6050(diff(logmpu6050(:1))<0,:);'在我的具體情況下,我得到一個26.214X7的原始矩陣是26220X7,所以解決方案不考慮(邏輯上正確)矩陣的最終值 –