代码之家  ›  专栏  ›  技术社区  ›  MDBX

将带有工程符号的数据导入Matlab

  •  -1
  • MDBX  · 技术社区  · 9 年前

    我有一个.xls文件,我想通过xlsread函数将其导入Matlab。我得到了工程符号数字的NaN。就像我得到了15.252 B或1.25 M的NaN 有什么建议吗?

    更新:我可以使用 [num,txt,raw] = xlsread('...') 原始的正是我想要的,但我怎么能用(*10 6. )?

    2 回复  |  直到 9 年前
        1
  •  0
  •   Andrei    9 年前

    首先,您可以使用

    [~,~,raw] = xlsread('MyExcelFilename.xlsx')
    

    然后,您可以编写一个简单的函数,根据“B”、“M”等从字符串中返回一个数字。下面是这样一个示例:

    function mynumber = myfunc( mystring )
    % get the numeric part 
    my_cell = regexp(mystring,'[0-9.]+','match');
    mynumber = str2double(my_cell{1});
    % get ending characters
    my_cell = regexp(mystring,'[A-z]+','match');
    mychars = my_cell{1};
    % multiply the number based on char
    switch mychars
        case 'B'
            mynumber = mynumber*1e9;
        case 'M'
            mynumber = mynumber*1e6;
        otherwise
    end
    
    end
    

    当然,还有其他方法可以将数字字符串与其他字符串分开,使用您想要的方法。有关更多信息,请参阅 regexp 文档最终使用 cellfun 要将单元格数组转换为数字数组,请执行以下操作:

    my_array = cellfun(@myfunc,raw);
    
        2
  •  0
  •   Agnieszka Mikołajczyk    9 年前

    编辑:

    Matlab不提供工程格式字符串的任何内置格式。

    资料来源: http://se.mathworks.com/matlabcentral/answers/892-engineering-notation-printed-into-files

    在源代码中,您还可以找到对您有帮助的函数。