gpt4 book ai didi

arrays - 从 Excel 工作表创建结构数组

转载 作者:行者123 更新时间:2023-12-04 21:56:21 33 4
gpt4 key购买 nike

我编写了一个 matlab 函数,它接受 excel 文档的字符串(名称)作为输入:

function printOut = modData(inputExcel)
[num,txt,raw]=xlsread(inputExcel)

excel表有以下数据:

名字 |姓氏 |主题1 |主题 2 | ..(依此类推主题 n)

对于 excel 表中的每一列,每个主题 n 中都有特定数量的人名和他们的标记行(比如 200 行)。

我需要为上面指定的每一列创建一个结构数组,其中包含每个人的数据(带字段的 1x200 结构数组)。还有 主题名称随每个 Excel 表而变化 所以我需要结构数组在这个意义上是动态的(例如,Subject1 可以是化学、Subject2 数学等)

我怎样才能做到这一点?

结构中第一个条目的示例应该是:
First-Name: {'George'}
Last-Name: {'Henry'}
Chemistry: [55]
Math: [76]
Subject3: ....

我目前的尝试如下:
[RawRow,RawCol]=size(raw);
for kk=2:RawRow
studentFName = raw(kk,1);
allFName = [studentFName];
allFName = [allFName;studentFName];
end

DataStruct = struct(raw{1,1},allFirstNames,raw{1,2},allLastNames,raw{1,3},Subject1,....)

上面的 for 循环不起作用,allFName 只包含 excel 文件中最后一行/条目的名字。

最佳答案

您只需调用 struct 即可完成此操作(不需要循环)首先以两种方式处理原始数据:

  • 替换列名中的无效字符,因为结构字段名必须遵循相同的 naming conventions as variables .在这种情况下,'-'可以替换为 '_' .
  • 将列名之后的所有行收集到另一个元胞数组中。这将允许您轻松地将所有数据传递给 struct作为 comma separated list .

  • 这是一些示例原始数据(从 xlsread 加载后)和执行上述两个步骤的单行代码:
    >> raw = {'First-Name' 'Last-Name' 'Chemistry' 'Math' 'Killing'; ...
    'George' 'Henry' 55 76 0; 'Krombopulos' 'Michael' 90 90 100}
    raw =

    3×5 cell array

    'First-Name' 'Last-Name' 'Chemistry' 'Math' 'Killing'
    'George' 'Henry' [ 55] [ 76] [ 0]
    'Krombopulos' 'Michael' [ 90] [ 90] [ 100]

    >> cellData = [strrep(raw(1, :), '-', '_'); num2cell(raw(2:end, :), 1)]

    cellData =

    2×5 cell array

    'First_Name' 'Last_Name' 'Chemistry' 'Math' 'Killing'
    {2×1 cell} {2×1 cell} {2×1 cell} {2×1 cell} {2×1 cell}

    现在您可以像这样轻松地创建结构数组:
    >> DataStruct = struct(cellData{:});
    >> DataStruct(1)

    ans =

    struct with fields:

    First_Name: 'George'
    Last_Name: 'Henry'
    Chemistry: 55
    Math: 76
    Killing: 0

    >> DataStruct(2)

    ans =

    struct with fields:

    First_Name: 'Krombopulos'
    Last_Name: 'Michael'
    Chemistry: 90
    Math: 90
    Killing: 100

    关于arrays - 从 Excel 工作表创建结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43949009/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com