【问题标题】:convert number from cell to double, cell2mat not working将数字从单元格转换为双精度,cell2mat 不起作用
【发布时间】:2015-09-15 00:10:00
【问题描述】:

我觉得我疯了。

我有一个 3 x 2 的单元格,如下所示。

 Region  Code
 US      1
 EU      2

然后我有以下代码来确定欧盟地区的行号。

eq_code_index = find(ismember(fund.type_des(:, 1), 'EU'));
eq_code = cell2mat(fund.type_des(eq_code_index, 2));

eq_code_index 返回正确的 3(行标题包含在输出中)。所以我想要第 3 行第 2 列中的值,即 2。然后我使用 cell2mat 将其从单元格值转换为整数,但是它不起作用,值是 char 类型?不知道为什么 cell2mat 不工作?

更新

即使我在下面执行以下两行代码,我也无法将代码转换为向量,它们会变成 char 的

codes = fund.type_des(2:end, end);
codes = cell2mat(codes)

【问题讨论】:

  • 如果没有更多代码,我无法很好地复制它,但首先想到的是您不能在初始单元格上使用cell2mat,因为它包含多个类。另一件事:似乎eq_code 正在调用单个单元格。在这种情况下使用str2num 而不是cell2mat。如果它是一个数字,如上所示,您正在调用一个带有fund.type_des(eq_code_index, 2) 的数字,这不是一个单元对象,因此 MATLAB 会抛出一个错误。
  • 打印你得到的实际错误。此外,打印以下结果:class(fund.type_des{2, 2})(注意花括号)。如果可能,首先说明如何获得元胞数组。
  • 我实际上并没有收到错误。只是 eq_code 应该是一个数字,而是一个 2 x 1 char
  • class(fund.type_des{2, 2}) 是......?
  • 一般来说,不要将标题放在单元格中。如果您想要标题使用表格或结构而不是单元格。在您的情况下,整个单元格被读取为字符。您需要更改导入脚本。

标签: matlab


【解决方案1】:

要访问元胞数组中的单个元素,请使用花括号:

fund.type_des{eq_code_index, 2};

这通常比使用cell2mat() 更简单。如果单元格的内容是字符并且您想要一个整数,则必须执行转换。 str2num() 是众多选项之一:

eq_code = str2num(fund.type_des{eq_code_index, 2});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多