我想将三个<1xN cell>
(A
,B
和C
)转换为单个Nx3
矩阵。有人可以帮我这个吗?
C={{1xN}; {1xN}; {1xN}};
其中每个N
是单引号中的数字,例如
C = {{'123123' ,'12324', ....N times}; {'123123', '12324', ....N times}; {'123123', '12324' ,....N times}}
由于他们中的一些人提到了荒谬的输入,所以这就是上述形式的原因。
三个嵌套的单元格数组是正则表达式的结果,其中我的字符串和表达式都是字符串。因此,我将regexp的输出作为行向量的三个单元阵列。 例如,
node_ids=regexp(nodes,'(?<=node id=")\d*','match');
我可以使用cat函数,然后对所有三个单元格数组使用str2double,最后通过cell2mat形成一个矩阵。 例如,
node_ids=cat(1,node_ids{:});node_ids=str2double(node_ids);
但这需要更多时间并且有更多LOC。 我的问题是可以用更少的代码行完成吗?
我尝试使用cat
函数,但一直收到此错误:
不支持包含单元格数组或对象的单元格数组。
答案 0 :(得分:1)
您的输入数据非常糟糕....为什么使用嵌套的单元格数组,其中每个元素都是一个字符串?
在任何情况下,假设C
是您的原始输入数据,请执行以下操作:
C = {{'123123' '12324'}; {'123123' '12324'}; {'123123' '12324'}};
out = cellfun(@(x) cellfun(@str2num, x, 'uni', 0), C, 'uni', 0);
out = cell2mat(cellfun(@cell2mat, out, 'uni', 0));
第一行是一些虚拟数据。下一行首先遍历单元格数组上的每个嵌套单元格元素,然后将字符串转换为数字。但是,这些仍然在单元阵列中。因此,下一行将嵌套单元格中的每个单元格数组转换为矩阵,然后我们将所有单元格合并为一个最终矩阵。
我们得到:
>> out
out =
123123 12324
123123 12324
123123 12324