【发布时间】: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