问题描述:
我刚刚开始使用Octave(没有资金用于Matlab:/)而且我也是Stack Overflow的新手,所以请原谅我用惯例做的任何错误。
问题:我有一个类似csv的字符串:
Bob Marley,Kobe Bryant,Michael Jackson,Kevin Hart
我想把它变成一个1列矩阵(我需要它在一个矩阵中,以便我可以将它与其他矩阵中的数据结合起来)。
我的方法:我尝试过做textread
,但这给了我一个单元格数组。我尝试使用cell2mat
将生成的单元格数组转换为矩阵,但我怀疑我不能这样做,因为我的字符串长度各不相同。
解决办法:
你可以使用char
数组:
fid = fopen('strings.csv'); A = textscan(fid, '%s', 'delimiter', ','); B = char(A{:}) [rows, cols] = size(B)
输出如下:
B = Bob Marley Kobe Bryant Michael Jackson Kevin Hartrows = 4cols = 15
如您所见,B
的列数是所有“字符串”的最大长度(Michael Jackson,15)。所有其他“字符串”都会附加空格。
考虑到您所在的目录中有一个文件“strings.csv”,其中包含您在问题中提到的内容,您的代码应如下所示:
fid=fopen('strings.csv');A=textscan(fid,'%s','delimiter',',');A=A{1};A=cellfun(@(x) string(x),A,'uni',0);B=[A{:}];
未经允许不得转载:编程自学网 » 将字符串的csv转换为矩阵