Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.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
String Matlab,如何将两个数字变量写入单个字符串单元格数组变量?_String_Matlab_Cell Array - Fatal编程技术网

String Matlab,如何将两个数字变量写入单个字符串单元格数组变量?

String Matlab,如何将两个数字变量写入单个字符串单元格数组变量?,string,matlab,cell-array,String,Matlab,Cell Array,我有两个大小的数字变量 我想用这些X和Y变量编写一个变量字符串单元格数组,输出为 ' 1,-1,' ' 2,-2,' ' 3,4.5,' ' 4,12.6,' ' 5,-5' 任何帮助都将不胜感激。谢谢一种基于arrayfun的方法- 输出- out = ' 1,-1,' ' 2,-2,' ' 3,4.5,' ' 4,12.6,' ' 5,-5' 一种基于arrayfun

我有两个大小的数字变量

我想用这些X和Y变量编写一个变量字符串单元格数组,输出为

'     1,-1,'
'     2,-2,'
'     3,4.5,'
'     4,12.6,'
'     5,-5'
任何帮助都将不胜感激。谢谢

一种基于arrayfun的方法-

输出-

out = 
    '     1,-1,'
    '     2,-2,'
    '     3,4.5,'
    '     4,12.6,'
    '     5,-5'
一种基于arrayfun的方法-

输出-

out = 
    '     1,-1,'
    '     2,-2,'
    '     3,4.5,'
    '     4,12.6,'
    '     5,-5'

可能有一种比循环更好的方法,但这种方法应该有效:

X = [1:5]';
Y = [-1, -2, 4.6, 12.6, -5]';
XY = [X Y];

C = cell( size(XY, 1), 1);
for ii=1:size(XY, 1)
        C{ii} = sprintf('     %d,%g', XY(ii,:) );

        if( ii ~= length(XY) )
               C{ii} = [C{ii} ','];
        end

end

C

可能有一种比循环更好的方法,但这种方法应该有效:

X = [1:5]';
Y = [-1, -2, 4.6, 12.6, -5]';
XY = [X Y];

C = cell( size(XY, 1), 1);
for ii=1:size(XY, 1)
        C{ii} = sprintf('     %d,%g', XY(ii,:) );

        if( ii ~= length(XY) )
               C{ii} = [C{ii} ','];
        end

end

C

我认为这是最直观、最快捷的方式:

%# example data
X = [ 1, 2, 3, 4, 5]';
Y = [-1, -2, 4.5, 12.6, -5]';

%# Controls the amount of leading spaces. This may depend on your specific 
%# software (or hardware?) so I left it here as a seperate variable.
spaces = {repmat(' ', 1,5)};  %# NOTE: must be cell to protect it from trim()

%# Now form the cellstring
S = strcat(spaces, num2str(X), ',', num2str(Y, '%-g'), ',');

%# complete it by removing the last comma
S{end} = S{end}(1:end-1);

我认为这是最直观、最快捷的方式:

%# example data
X = [ 1, 2, 3, 4, 5]';
Y = [-1, -2, 4.5, 12.6, -5]';

%# Controls the amount of leading spaces. This may depend on your specific 
%# software (or hardware?) so I left it here as a seperate variable.
spaces = {repmat(' ', 1,5)};  %# NOTE: must be cell to protect it from trim()

%# Now form the cellstring
S = strcat(spaces, num2str(X), ',', num2str(Y, '%-g'), ',');

%# complete it by removing the last comma
S{end} = S{end}(1:end-1);


是否需要在所有单元格中预先添加空格?最后一个单元格只有一个逗号,而其他单元格只有两个?除了@Divakar的问题:谢谢你的回答。是的,我需要在所有单元格中预先添加空格,并且最后一个单元格应该只有一个逗号符号。我需要这种特殊的格式来输入特定的软件。谢谢你的帮助。你需要在所有单元格中预先添加空格吗?最后一个单元格只有一个逗号,而其他单元格只有两个?除了@Divakar的问题:谢谢你的回答。是的,我需要在所有单元格中预先添加空格,并且最后一个单元格应该只有一个逗号符号。我需要这种特殊的格式来输入特定的软件。谢谢你的帮助。为什么不使用t1=arrayfun@kstrcat'',num2strXk',',',',num2strYk',,,,[1:numelX]',uni',0而不是写在两行中?@Nishant我想我不想在一行中把所有内容都挤进去。哦,顺便说一句,空格连接的方式对strcat不起作用。为什么不使用t1=arrayfun@kstrcat'',num2strXk',',',',num2strYk',,,,[1:numelX]',uni',0而不是写在两行中?@Nishant我想我不想在一行中把所有内容都挤进去。哦,顺便说一句,空格连接的方式对strcat不起作用。@Divakar下面的arrayfun可能是一个更好的解决方案或某种组合。循环次数越少,你的情况就越好:-我现在要说的是,我上面的答案是一个答案,但没有其他答案那么有效:-如果它得到了期望的输出,它是值得的+1表示努力。可能您需要对预分配进行更正-C=cellsizeXY,1,1@Divakar下面的arrayfun可能是更好的解决方案或某种组合。循环次数越少,你的情况就越好:-我现在要说的是,我上面的答案是一个答案,但没有其他答案那么有效:-如果它得到了期望的输出,它是值得的+1表示努力。可能您需要对预分配进行更正-C=cellsizeXY,1,1Hanks,但最终的“ans”格式不正确。+1,我试图实现这一点,但一直在思考如何调整。美好的answer@user3771510在我的机器上,最终的答案是一个5x1电池,与问题中的电池完全相同。我已经在R2014a和R2011a@user3771510:这里也是;我在R2010a/b、R2012a、R2013b上进行了测试。你的版本是什么?@user3771510:你需要整数才能成为整数吗?我的意思是,这个解决方案总是使用2位数,即使对于roundN==N的元素也是如此;这是可以接受的,还是应该只在必要时才包括额外的数字?谢谢,但是最后的“ans”格式不正确。+1,我试图实现这一点,但在考虑修剪的方法时卡住了。美好的answer@user3771510在我的机器上,最终的答案是一个5x1电池,与问题中的电池完全相同。我已经在R2014a和R2011a@user3771510:这里也是;我在R2010a/b、R2012a、R2013b上进行了测试。你的版本是什么?@user3771510:你需要整数才能成为整数吗?我的意思是,这个解决方案总是使用2位数,即使对于roundN==N的元素也是如此;这是可以接受的,还是只在必要时才包括额外的数字?