【发布时间】:2014-01-28 15:58:28
【问题描述】:
我有一个矩阵,我想将单元格数组中的元素放入矩阵的第三列。我该怎么做?
这是我的意思的一个例子。 这是矩阵(E):
43.4350000000000 -88.5277780000000 NaN 733144
43.4350000000000 -88.5277780000000 NaN 733146
43.4350000000000 -88.5277780000000 NaN 733148
43.4350000000000 -88.5277780000000 NaN 733150
我想取 NaN 列(第 3 列)并将单元格数组 (uID) 的元素放入其中 元胞数组如下所示:
'027-0007'
'079-0026'
'119-8001'
'133-0027'
我使用了这个代码:
E(:,3) = reshape(repmat(uID',length(all_dates),1),[],1)
将uID的每一行复制一定次数,然后将其重新整形为一列,使其与E列的大小相同。
但是,当我现在运行它时,E 是一个矩阵而 uID 是一个单元格这一事实导致 MATLAB 告诉我Conversion to double from cell is not possible。 = 右侧的部分工作正常。将单元格元素放入 E 是导致问题的原因。
【问题讨论】:
-
单元格包含字符串,而目标矩阵必须包含数字。例如,您想如何将
'027-0007'转换为数字?那会是20吗?还是270007?还是……? -
另外,为什么需要
repmat元胞数组?它的大小似乎适合您示例中的列大小 -
027-0007 不是数字。这是一个站点ID。这就是我遇到这个问题的原因。我的示例只是更大数组的一小部分,这就是我使用 repmat 的原因。实际数组是 376x4。
-
你只能用数字填充矩阵,不能用siteID(字符串)
-
这是一个更大的问题 (stackoverflow.com/questions/21390103/…) 的一部分。那你能看看那个吗?如果我无法用字符串填充矩阵,则无法检查日期和 SiteID 之间的一致性以填充数据或添加 NaN。为那个问题给出的答案有一个很好的方法,但是遇到了这个问题。