【问题标题】:Reading an Excel File (Excelfinlename.dvd) with decimal comma instaed of decimal point?用十进制逗号而不是小数点读取 Excel 文件(Excel Filename.dvd)?
【发布时间】:2013-07-31 16:43:05
【问题描述】:

目前我正在尝试读取具有两个不同结尾的 excel 文件。 dvd & .sod(来自 SCADA 系统)。我正在使用 [Values] = xlsread(File_to_Open) 这样做。我的问题是:在 excel 文件中,我有这样写的值(示例:21,1),逗号不点(我使用的是德国 Windows 系统),当我将这些数据导入 matlab 时,我得到类似 37 的值,我不知道为什么!在使用 xlsread() 函数时,您能帮我解决这个导入问题吗?

Example for my Excel Data is as following:
Date    Hour    Minute  Second  PlantNo Error   arDevV1 arDevV2 Temp.
01.07.2013  0   0   0   1   0   0,0 0,0 20,1
01.07.2013  0   0   0   2   0   0,0 0,0 20,6
01.07.2013  0   0   0   3   0   0,0 0,0 20,4
01.07.2013  0   0   0   4   0   0,0 0,0 20,7
01.07.2013  0   0   0   5   0   0,0 0,0 20,9
01.07.2013  0   0   0   6   0   0,0 0,0 20,6
01.07.2013  0   0   0   7   0   0,0 0,0 163,2
01.07.2013  0   1   0   1   0   0,0 0,0 20,1
01.07.2013  0   1   0   2   0   0,0 0,0 20,5
01.07.2013  0   1   0   3   0   0,0 0,0 20,3
01.07.2013  0   1   0   4   0   0,0 0,0 20,7

我在 matlab 中得到以下内容:

0   0   0   1   0   0   0   37
0   0   0   2   0   0   0,400000000000000   38
0   0   0   3   0   0   0   -43,6000000000000
0   0   0   4   0   0   0   37,8000000000000
0   0   0   5   0   0   0,300000000000000   39,5000000000000
0   0   0   6   246 0   0   0
0   0   1   7   0   0   0   38,8000000000000
0   1   0   1   0   0   0   37
0   1   0   2   0   0   0,400000000000000   38
0   1   0   3   0   0   0   -43,6000000000000
0   1   0   4   0   0   0   37,8000000000000
0   1   0   5   0   0   0,300000000000000   39,5000000000000
0   1   0   6   246 0   0   0
0   1   1   7   0   0   0   38,7000000000000
0   2   0   1   0   0   0   36,9000000000000
0   2   0   2   0   0   0,400000000000000   38

【问题讨论】:

    标签: matlab


    【解决方案1】:

    仅使用 Matlab:

    您可以尝试使用原始输出并将逗号替换为点。您将原始数据作为 xlsread 的第三个输出:

    [num,txt,raw] = xlsread(_) 还使用任何输入返回元胞数组 txt 中的文本字段,以及元胞数组 raw 中未处理的数据(数字和文本)前面语法中的参数。如果指定了 xlRange,则工作表中位于具有数据的行和列之前的前导空白行和列将以原始形式返回。

    在我看来,更好的办法是在 Excel 中将逗号更改为点。目前,matlab(或 xlsread)正在将数据解释为其他内容。

    【讨论】:

    • 你有一个函数可以直接在逗号和点之间进行这种转换吗?这可以帮助我节省一些时间
    • 又快又脏,它应该看起来像这样:遍历原始数据中的每个元素并使用 strrep(raw(indx,indy),',''.')。我今天没有足够的时间来测试它:(也许别人有......
    • 非常感谢您的帮助,我只是使用 Cell2mat 函数来获取所需的值 :) 我节省了一些时间而不使用 for 循环 ^^
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    相关资源
    最近更新 更多