Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab:二维单元阵列到字符阵列_Matlab_Cell Array - Fatal编程技术网

Matlab:二维单元阵列到字符阵列

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

我想知道是否有一种很好的方法可以将我的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   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   
是的,那会有用的,谢谢:)我仍然希望没有环的东西更干净,呵呵。是的,那会有用,谢谢:)我仍然希望没有环的东西更干净,呵呵。是的,那会有用,谢谢:)我仍然希望没有环的东西更干净,呵呵。是的,那会有用,谢谢:)我还是希望有一个没有环的更干净的东西,呵呵。