Need help with storing live data from sensors into array
조회 수: 12 (최근 30일)
이전 댓글 표시
this is my code. I want to store the incoming data into my array/matrix whichever would do the trick. This keeps overwriting the previous data into the array. I want the data to be added up at the bottom.
I am also getting this problem. "Conversion to cell from uint16 is not possible."
iterate = 0;
while 1
iterate =plus(iterate, 1); %counter
disp(iterate);
Gyro_X = readRegister(MPU9250, GYRO_XOUT_H, 'uint16')
Gyro_Y = readRegister(MPU9250, GYRO_YOUT_H, 'uint16')
Gyro_Z = readRegister(MPU9250, GYRO_ZOUT_H, 'uint16')
pause(1/10);
%Gyro = table(iterate, Gyro_X, Gyro_Y, Gyro_Z);
Gyro = {};
Gyro(i) = [ iterate, Gyro_X, Gyro_Y, Gyro_Z];
end
댓글 수: 0
채택된 답변
Mustafa Abu-Mallouh
2018년 12월 30일
편집: Mustafa Abu-Mallouh
2018년 12월 30일
If you want to store the values in each row, call out that you want the values to take over all columns of "Gyro". See below:
i = 0;
max_data_len = 10;
% Initialize 'Gyro' with desired dimensions
% - Don't have to but it helps performance
Gyro = zeros( max_data_len , 4 );
while i < max_data_len
i = i+1;
Gyro_X = randi(30,1);
Gyro_Y = randi(30,1);
Gyro_Z = randi(30,1);
% If creating a results array
Gyro(i,:) = [i Gyro_X Gyro_Y Gyro_Z];
end
Another issue is you redefine "Gyro" as an empty cell array every iteration of the loop when you call the following code:
Gyro = {};
This clears the data you originally had stored in the variable. This is also the reason you are getting the "Conversion to cell from uint16 is not possible" error; it is trying to convert your 16 bit integer array into a cell array
추가 답변 (1개)
ahmed nebli
2018년 12월 29일
편집: madhan ravi
2018년 12월 29일
what you need to do is create a vector/matri without defining its size first (e.g.: A=[]; ) then use the command vertcat.
참고 항목
카테고리
Help Center 및 File Exchange에서 Data Import and Analysis에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!