2014-12-13 120 views
0

我想在MATLAB中将文本文件(逗号分隔值)转换为矩阵。我已经能够将单行读取到单元阵列中,但是我无法将这些值转换为矩阵形式。通过读取文件的行获得的7X1细胞是一排大且具有下列值Matlab:单元格到矩阵行

line = 
     '123' 
     '' 
     '"Foo"' 
     [1X27 char] 
     '1.01' 
     '2.02' 
     '0' 

因此,该文件基本上是类似的线的集合。任何关于如何将这些行转换为矩阵形式的建议?任何帮助,将不胜感激。

+0

是的,我想输出是格式行的= [123美孚[1X27字符] 1.01 2.02 0] – BajajG 2014-12-13 08:44:41

+1

这'[行{:}]'? – Divakar 2014-12-13 15:10:11

回答

0

您可以使用cell2mat函数从您的单元格创建矩阵(有关详细信息,请参见MATLAB help page)。由于您的单元格是一个列向量,并且您想要一个行向量,因此您必须先转置单元格。

row = cell2mat(line.'); 

如果你想所有元素之间添加一个空格,这里有一个办法做到这一点:

% Remove all empty fields 
line = line(~cellfun(@isempty,line)); 

% Add a space after each element 
line = strcat(line,{' '}); 

% Now call cell2mat 
row = cell2mat(line.'); 

% and remove space at end 
row = strtrim(row); 

您可以使用regexpi找到引号和删除它们。

row = row(regexpi(row,'"')) = ''; 
+0

我之前尝试过这样做,但它生成的输出为字符串'123'Foo“abcdefghijklmnopqrstuvwxyza1.012.020',它不是所需的格式。 – BajajG 2014-12-13 08:59:09

+0

所以你需要所有条目之间的空格?而不是char数组的内容,你需要文本'[1x27 char]'? – hbaderts 2014-12-13 09:01:26

+0

不,我需要矩阵中的所有条目以及[1x27字符]中的文本,而不是'[1x27字符]'。 – BajajG 2014-12-13 09:08:33