Matlab:二维单元阵列到字符阵列
我想知道是否有一种很好的方法可以将我的2D单元格数组转换成2D字符矩阵 单元阵列如下所示:Matlab:二维单元阵列到字符阵列,matlab,cell-array,Matlab,Cell Array,我想知道是否有一种很好的方法可以将我的2D单元格数组转换成2D字符矩阵 单元阵列如下所示: 'test' 'me' '0' '22' 'tester' 'me' '14' '241' 'test' 'you' '25' '1' 现在我想在列之间加上空格,使整个数组成为一个字符数组。意思是我想要这个: 'test me 0 22 ' 'tester me 14 241' 'test you 25 1 ' 还是这个 'test
'test' 'me' '0' '22'
'tester' 'me' '14' '241'
'test' 'you' '25' '1'
现在我想在列之间加上空格,使整个数组成为一个字符数组。意思是我想要这个:
'test me 0 22 '
'tester me 14 241'
'test you 25 1 '
还是这个
'test me 0 22'
'tester me 14 241'
'test you 25 1'
你能帮我吗?
我尝试了char()
,但它不关心单元格数组是否为2D,只为单元格数组中的每个元素创建一行
编辑:若有人想取回一个由连接行组成的单元格数组,请查看以下内容
非常感谢 好吧,
char
让你有一部分的路要走,还有一些重塑等的麻烦事。剩下的事:
out = char(C');
out(:,end+1)=' ';
out = reshape(out',[28,3]);
out = out';
(中的空间可能比您想要的多)
但是,更好的方法可能是在单元格数组中填充内部字符串,使每行的总长度相同,然后添加
f = @(x) [x,' '];
% need at least one space after each entry
C = cellfun(f,C,'UniformOutput',0);
% now work out how much extra length needed
l = cellfun(@length,C);
l = sum(l,2);
l = max(l)-l;
% pad
for n = 1:length(l)
C{n,end} = [C{n,end},blanks(l(n))];
end
现在我们需要的是:
cell2mat(C)
ans =
test me 0 22
tester me 14 241
test you 25 1
嗯,
char
让你有一部分的路要走,还有一些关于重塑等的事情。剩下的是:
out = char(C');
out(:,end+1)=' ';
out = reshape(out',[28,3]);
out = out';
(中的空间可能比您想要的多)
但是,更好的方法可能是在单元格数组中填充内部字符串,使每行的总长度相同,然后添加
f = @(x) [x,' '];
% need at least one space after each entry
C = cellfun(f,C,'UniformOutput',0);
% now work out how much extra length needed
l = cellfun(@length,C);
l = sum(l,2);
l = max(l)-l;
% pad
for n = 1:length(l)
C{n,end} = [C{n,end},blanks(l(n))];
end
现在我们需要的是:
cell2mat(C)
ans =
test me 0 22
tester me 14 241
test you 25 1
嗯,
char
让你有一部分的路要走,还有一些关于重塑等的事情。剩下的是:
out = char(C');
out(:,end+1)=' ';
out = reshape(out',[28,3]);
out = out';
(中的空间可能比您想要的多)
但是,更好的方法可能是在单元格数组中填充内部字符串,使每行的总长度相同,然后添加
f = @(x) [x,' '];
% need at least one space after each entry
C = cellfun(f,C,'UniformOutput',0);
% now work out how much extra length needed
l = cellfun(@length,C);
l = sum(l,2);
l = max(l)-l;
% pad
for n = 1:length(l)
C{n,end} = [C{n,end},blanks(l(n))];
end
现在我们需要的是:
cell2mat(C)
ans =
test me 0 22
tester me 14 241
test you 25 1
嗯,
char
让你有一部分的路要走,还有一些关于重塑等的事情。剩下的是:
out = char(C');
out(:,end+1)=' ';
out = reshape(out',[28,3]);
out = out';
(中的空间可能比您想要的多)
但是,更好的方法可能是在单元格数组中填充内部字符串,使每行的总长度相同,然后添加
f = @(x) [x,' '];
% need at least one space after each entry
C = cellfun(f,C,'UniformOutput',0);
% now work out how much extra length needed
l = cellfun(@length,C);
l = sum(l,2);
l = max(l)-l;
% pad
for n = 1:length(l)
C{n,end} = [C{n,end},blanks(l(n))];
end
现在我们需要的是:
cell2mat(C)
ans =
test me 0 22
tester me 14 241
test you 25 1
我只能看到如何在匹配使用简单循环指定的格式时执行此操作,如果格式不重要,那么像nkjt所做的那样使用char和reformate是我所能看到的最好的
cellArray={ snip };
outp=[]
for ii=1:size(cellArray,2)
outp=[outp str2mat(cellArray(:,ii)) blanks(size(cellArray,1))'];
end
使用str2mat
将每一列连接到一个(填充的)字符数组中,添加一个尾随空格,然后添加到输出中
结果:
outp =
test me 0 22
tester me 14 241
test you 25 1
我只能看到如何在匹配使用简单循环指定的格式时执行此操作,如果格式不重要,那么像nkjt所做的那样使用char和reformate是我所能看到的最好的
cellArray={ snip };
outp=[]
for ii=1:size(cellArray,2)
outp=[outp str2mat(cellArray(:,ii)) blanks(size(cellArray,1))'];
end
使用str2mat
将每一列连接到一个(填充的)字符数组中,添加一个尾随空格,然后添加到输出中
结果:
outp =
test me 0 22
tester me 14 241
test you 25 1
我只能看到如何在匹配使用简单循环指定的格式时执行此操作,如果格式不重要,那么像nkjt所做的那样使用char和reformate是我所能看到的最好的
cellArray={ snip };
outp=[]
for ii=1:size(cellArray,2)
outp=[outp str2mat(cellArray(:,ii)) blanks(size(cellArray,1))'];
end
使用str2mat
将每一列连接到一个(填充的)字符数组中,添加一个尾随空格,然后添加到输出中
结果:
outp =
test me 0 22
tester me 14 241
test you 25 1
我只能看到如何在匹配使用简单循环指定的格式时执行此操作,如果格式不重要,那么像nkjt所做的那样使用char和reformate是我所能看到的最好的
cellArray={ snip };
outp=[]
for ii=1:size(cellArray,2)
outp=[outp str2mat(cellArray(:,ii)) blanks(size(cellArray,1))'];
end
使用str2mat
将每一列连接到一个(填充的)字符数组中,添加一个尾随空格,然后添加到输出中
结果:
outp =
test me 0 22
tester me 14 241
test you 25 1
是的,那会有用的,谢谢:)我仍然希望没有环的东西更干净,呵呵。是的,那会有用,谢谢:)我仍然希望没有环的东西更干净,呵呵。是的,那会有用,谢谢:)我仍然希望没有环的东西更干净,呵呵。是的,那会有用,谢谢:)我还是希望有一个没有环的更干净的东西,呵呵。