【问题标题】:Indexing data in matlabmatlab中的数据索引
【发布时间】:2014-10-06 17:47:48
【问题描述】:

我从 Excel 电子表格中导入了大量数据,因此我有一个 1x27 矩阵。

我已经使用这个从 excel 导入数据

filename = 'for_matlab.xlsx';
sheet = 27;
xlRange = 'A1:G6';
all_data = {};

for i=1:sheet,
    all_data{i} = xlsread(filename, i, xlRange);
end

然而,这个 all_data 矩阵(1x27)的每个元素都包含我的数据,但我无法访问单个元素。

all_data{1} 

会给我整个矩阵,但我需要对该数据的各个元素执行乘法

还有

all_data(1)

只给出'5x6 double',即矩阵尺寸。

有谁知道我如何将每行的所有元素除以每行中的第三个元素并为我的所有“子矩阵”执行此操作(因为需要更好的词)

【问题讨论】:

  • 不清楚您的数据采用什么格式。也许您可以制作一个小型模拟数据集并发布一些代码来重新整理它,例如{{[1 2; 3 4], [5, 6; 7, 8]}, {[1 2; 3 4], [5, 6; 7, 8]}}。只要确保尝试包含所有功能,例如矩阵大小是否可以不同等

标签: matlab matrix indexing


【解决方案1】:

假设all_data 是一个元胞数组,并且每个元胞都包含一个矩阵(至少包含三列):

result = cellfun(@(x) bsxfun(@rdivide, x, x(:,3)), all_data, 'uniformoutput', 0);

【讨论】:

    【解决方案2】:

    您在 matlab 中混合术语。你所拥有的是 1x27 CELLS 每个都包含一个矩阵。 如果您访问all_data{1},它将为您提供存储在第一个单元格中的整个矩阵。 如果您想访问该矩阵的元素,那么您需要执行以下操作:all_data{1}(2,4)。此示例访问第一个单元格中矩阵的 2,4 元素。

    Luis Mendo 绝对解决了你的问题,但要注意 Matlab 中 Cells 和 matrixes 的区别!

    【讨论】:

      【解决方案3】:

      好的,我现在找到了答案。

      基本上你必须使用这两种类型的括号,因为数据类型不同

      即all_data{1}(1:4) 或类似的东西。

      干杯

      【讨论】:

      • 您尝试过 Luis Mendo 的解决方案吗?它会在一行中解决您的所有问题!
      • 您好。首先,您应该尝试 Luis 的答案,这对您很有用。那么你应该知道在matlab中索引单元格和矩阵时你在做什么,否则你将来会再次遇到类似的问题,我们不希望你有问题!最后但并非最不重要的一点是,StackOVerflow 是一个问答场所,您应该在其中接受适合您问题的答案(单击旁边的勾号)。这不是一个论坛,它不工作的精简版!干杯,祝你工作顺利
      • 安德,谢谢你告诉我——我以后会这样做的。丹 - 是的,我正在努力,但由于我不理解代码,我仍在查找函数。谢谢大家的帮助
      猜你喜欢
      • 1970-01-01
      • 2018-05-02
      • 2012-04-03
      • 1970-01-01
      • 2015-12-23
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      • 2015-12-25
      相关资源
      最近更新 更多