【问题标题】:Data alignment in Excel or Matlab?Excel或Matlab中的数据对齐?
【发布时间】:2023-04-10 01:36:01
【问题描述】:

我进行了一项实验,并自动获得了 .csv 文件格式的读数。
然而,该设备应该每 0.1 秒读取一次,有时它会离线。
然而,设备一直在计数,但没有在 csv 文件中打印这些。
例如,它将读取 98.5、98.6、99.0。
我正在寻找一种将空白行放在缺少数据的地方的方法,例如它将读取 98.5、98.6、98.7、98.8、98.9、99.0。并为这些提供 Nan 的值。
不能单独进行,因为数据量很大(一天 864,00)。
关于在 Excel 或 Matlab 中执行此操作的任何想法?

【问题讨论】:

    标签: excel matlab csv nan


    【解决方案1】:

    在 MATLAB 中:

    您的数据似乎只有一位小数。为了避免floating point errors,您可以将第一列乘以10 和round it,以创建索引。 (另一种方法是使用文件交换中的ismemberf)。

    现在,创建所需大小的NANs 矩阵。之后,填充与您刚刚找到的索引对应的元素。

    idx = round(A(:,1)*10);
    x = NaN(max(idx)-min(idx),2);
    x(idx+1,:) = A
    
    A =  
             0    0.8147
        0.1000    0.9058
        0.5000    0.0975
        0.6000    0.2785
        0.7000    0.5469
        0.8000    0.9575
        1.1000    0.9649
        1.2000    0.1576
        1.3000    0.9706
        1.4000    0.9572
    
    x =
             0    0.8147
        0.1000    0.9058
           NaN       NaN
           NaN       NaN
           NaN       NaN
        0.5000    0.0975
        0.6000    0.2785
        0.7000    0.5469
        0.8000    0.9575
           NaN       NaN
           NaN       NaN
        1.1000    0.9649
        1.2000    0.1576
        1.3000    0.9706
        1.4000    0.9572
    

    在 Excel 中:

    您可以使用vlookup。如果没有找到值,它将返回N/A。下面截图中用到的函数是:

    =VLOOKUP(D1;$A$1:$B$10;2;0)
    

    【讨论】:

    • 我开始在excel中使用Vlookup功能。这会对我有帮助吗?就像我可以将一个值引用到前一页一样,所以如果它查找一个不存在的值,它应该给出一个 N/A
    • @MRaff16:检查更新! =) 是你要找的吗?
    • (假装E列不存在=P)
    • 嗨,感谢您在 Excel 中工作。在 Matlab 中是否有任何等效的方法?
    • MATLAB 的答案对您没有帮助吗? ismembervlookup 有点相似,但并不适合这里(尽管稍加改编的ismemberf 可能)。但是,我认为已经存在的答案应该可以正常工作 =) 如果您使用 ismemberf,您仍然需要使用 NaN 创建一个矩阵,因此它需要的行数一样多,而且速度会慢很多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 2019-02-06
    相关资源
    最近更新 更多