matlab中的元胞数组到矩阵的转换
Cell array to matrix conversion in matlab
我想将三个 <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
函数,但一直出现此错误:
Cannot support cell arrays containing cell arrays or objects.
您的输入数据非常糟糕....为什么要使用每个元素都是字符串的嵌套单元格数组?
无论如何,假设 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
我想将三个 <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
函数,但一直出现此错误:
Cannot support cell arrays containing cell arrays or objects.
您的输入数据非常糟糕....为什么要使用每个元素都是字符串的嵌套单元格数组?
无论如何,假设 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