我有两个值数组:
t = [0; 1; 2];
q = [0; 100; 200];
我需要将它们作为一个字符串,例如:
str = '0, 0, 1, 100, 2, 200';
在不使用循环的情况下,我看不到在MATLAB(R2017a)中执行此操作的好方法。我想尽可能避免这种情况,因为其中包含大量的值和大量的文件,而且这将永远耗时。
有什么想法吗?
答案 0 :(得分:2)
将compose
与strjoin
组合在一起:
t = [0; 1; 2];
q = [0; 100; 200];
str = strjoin(compose('%d', [t(:)'; q(:)']), ', ');
输出:
str =
'0, 0, 1, 100, 2, 200'
对于非整数,请使用:%f
代替%d
答案 1 :(得分:1)
这是一种可能的方法。这适用于整数,或者如果您希望在字符串表示形式中使用固定的小数位数:
t = [0; 1; 2];
q = [0; 100; 200];
tq = reshape([t(:).'; q(:).'], 1, []);
s = sprintf('%i, ',tq); % or change '%i' to something like '%.5f'
s = s(1:end-2)
结果:
s =
'0, 0, 1, 100, 2, 200'
如果您使用非整数,并且希望自动选择表示形式中的小数位数,则可以使用mat2str
而不是sprintf
,但是您需要使用regexpre
或类似功能:
t = [0; 1; 2];
q = [0; 100; 200];
tq = reshape([t(:).'; q(:).'], 1, [])
s = regexprep(num2str(tq), '\s+', ', ');