如何在matlab中将矢量转换为单元格数组?

时间:2015-07-17 20:55:23

标签: matlab data-structures

我有两段代码如下:

nodes = randsample ( n_nodes, round(j*n_nodes) )-1;      
nodes_seqs = arrayfun (@transfer, nodes, 'UniformOutput', false );

nodes = num2str(nodes);

nodes = cellstr(nodes);
file_n = strcat('fasta','_','myfilename' );  % file  name

fastawrite(strcat( file_n, '.fas' ), nodes, nodes_seqs);

另一个是:

nodes = 0 : n_nodes-1;

nodes_seqs = arrayfun (@transfer, nodes, 'UniformOutput', false );

nodes = num2str(nodes);

nodes = cellstr(nodes);
file_n = strcat('myfilename' );  % file  name

fastawrite(strcat( file_n, '.fas' ), nodes, nodes_seqs);

第一个按预期运行。但是,我第二个错误。在检查变量之后,我在第二个中得到了这个,节点是一个1乘1的单元阵列。我很困惑。它是如何工作的第一个,而不是第二个?非常感谢您的时间和关注。

2 个答案:

答案 0 :(得分:1)

在第二种情况下,由于节点是一个单元阵列,您需要使用

nodes = cell2mat(nodes)而非num2str,因为您的数据属于此类型的单元格而不是num。

以下是函数documentation on Mathworks

的链接

其他选项包括cell2struct()cell2table()

答案 1 :(得分:0)

我明白了。这里的主要原因是:在第一部分中,randsample返回列向量,而在第二部分中,节点被初始化为行向量。添加转置后,它可以工作。