在MATLAB中从数字数组创建逗号分隔的数据对字符串

时间:2019-06-05 14:56:51

标签: string list matlab csv

我有两个值数组:

t = [0; 1; 2];
q = [0; 100; 200];

我需要将它们作为一个字符串,例如:

str = '0, 0, 1, 100, 2, 200';

在不使用循环的情况下,我看不到在MATLAB(R2017a)中执行此操作的好方法。我想尽可能避免这种情况,因为其中包含大量的值和大量的文件,而且这将永远耗时。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

composestrjoin组合在一起:

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+', ', ');