2014-01-28 206 views
0

我有一个矩阵,我想把矩阵的第三列放入单元阵列中的元素。我怎样才能做到这一点?MATLAB使用单元阵列中的元素填充矩阵

这里是我的意思的一个例子。 这是矩阵(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引起问题的原因。

+1

单元格包含_strings_,而目标矩阵必须包含_numbers_。你想如何将“027-0007”变成一个数字?那会是20吗?还是270007?要么...? –

+0

另外,为什么你需要'repmat'单元格数组?它的大小似乎符合您示例中的列大小 –

+0

027-0007不是一个数字。这是一个siteID。这就是我遇到这个问题的原因。我的例子只是一个更大的数组的一小部分,这就是为什么我使用repmat。实际的数组是376x4。 – shizishan

回答

0

而是将数据插入到一个正常的矩阵,你可以将其插入到另一个细胞

Ecell=num2cell(E); 
    Ecell(:,3)=uID; 
0

您的单元格数组的内容不是数字,因此无法插入到数字矩阵中。您可以在以下

>> str2double({'3','17.5'}) 

ans = 

    3.0000 17.5000 

使用str2double为字符串单元阵列转换为数字阵列等,但是这只有当单元格的字符串内容表示实际数字,这似乎并没有在你的情况是真实的。

+0

YEah,它们不是数字。他们是siteID,所以我必须保持这种格式。 – shizishan