【问题标题】:How to create a submatrix extracting each raw from a matrix that satisfy a logical condition?如何创建一个子矩阵,从满足逻辑条件的矩阵中提取每个原始数据?
【发布时间】:2017-02-27 14:57:56
【问题描述】:

我有一个包含多个记录的 *.txt 文件,来自连接到 Arduino 的 MPU6050。

我可以识别何时创建了新记录,因为列时间从低于前一个的随机值重新开始(从不为 0)。

该文件是一个 nX7,其中包含顺序 time、ax、ay、az、gx、gy、gz

我试图从单个矩阵中提取 m 个子记录,所以我定义了一个逻辑 if。

  1. 如果时间 i > 时间 i+1 跟踪原始矩阵的位置并将此边界值存储在子矩阵(范围矩阵)中。
  2. 从范围矩阵创建一组子矩阵(子矩阵的总数将为 [size(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

我也在堆栈上阅读了很多问题,但我没有找到解决方案:

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

【问题讨论】:

    标签: matlab if-statement matrix dataset


    【解决方案1】:

    你可以使用差异。

    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
    rangematrix = logmpu6050(diff(logmpu6050(:,1)) > 0,:);
    

    【讨论】:

    • 谢谢,我会试试 :)
    • 如果没有if else语句,为什么要使用end?如果我使用rangematrix = logmpu6050(diff(logmpu6050(:,1)) < 0,:);,我可以知道这种情况何时发生,并且我有一个带有边界值的 5X7 矩阵。如果我在我的特定情况下使用rangematrix = logmpu6050(diff(logmpu6050(:,1)) < 0,:);,我得到一个 26.214X7 原始矩阵是 26220X7 所以解决方案不考虑(逻辑上正确)矩阵的最终值
    猜你喜欢
    • 1970-01-01
    • 2020-02-11
    • 2017-10-26
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 2019-03-09
    • 2019-05-04
    • 2011-10-02
    相关资源
    最近更新 更多