【问题标题】:Import/convert list of space separated numbers to list of arrays in Matlab将空格分隔的数字列表导入/转换为 Matlab 中的数组列表
【发布时间】:2016-01-06 18:49:00
【问题描述】:

我是 Matlab 新手,我想将带有空格分隔数字的列(源是 Excel 文件)转换为数组列表。

第一步,我想创建一个这样的数组列表:

然后我想像这样转置列表:

这个转换的正确命令是什么?

我知道这是一个简单的问题,但我找不到类似的问题。

【问题讨论】:

  • 定义向量的列表。你的意思是一个单元阵列?你的输入到底是什么?二维字符数组,还是带有换行符的单个字符串?
  • 请熟悉 MATLAB 的内置数据结构:主要是数组和单元格。您的部分问题表明您对这个主题并不是很清楚。另外,请先查看如何从 excel 导入数据;这可能已经指导您或限制您的选择。

标签: string excel matlab vector


【解决方案1】:

首先使用xlsread 读取原始文本。文本将作为单元格数组读入,其中每一行文本都放置在一个单元格中。完成此操作后,只需将字符串按空格拆分,以每行创建一个额外的单元格数组,然后将这些单元格输入到创建数字数组的函数中。您可以将cellfunstrsplitstr2double 结合使用。假设您的 Excel 文件名为 list.xls,请执行以下操作:

[~,~,RAW] = xlsread('list.xls');
list = cellfun(@str2double, cellfun(@strsplit, RAW, 'uni', 0), 'uni', 0).';

list 包含所需的输出。我也转换了结果,因为这是你想要的。我创建了一个与您在帖子中提到的方式相同的 Excel 文件。这是我运行代码时得到的。首先我将展示list 的外观,然后我们将检查实际内容是什么:

>> list

list = 

    [1x4 double]    [1x5 double]    [1x6 double]

>> celldisp(list)

list{1} =

        5405        5414        5420        9999



list{2} =

        5405        5414        5430        5341        9999



list{3} =

        5405        5419        5419        5419        5412        9999

这也是 MATLAB 变量编辑器的外观:

【讨论】:

    猜你喜欢
    • 2022-08-11
    • 1970-01-01
    • 2018-07-21
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多