【问题标题】:How to insert comma after each element in matlab?如何在matlab中的每个元素后插入逗号?
【发布时间】:2013-11-04 14:48:28
【问题描述】:

我有一个包含 4225 个元素的向量,它的元素由空格分隔,我必须在 MuPAD 中使用这个向量作为有向图的边权重矩阵。为了使这个向量在 MuPAD 中作为图边权重矩阵可访问,它的元素应该用逗号分隔。由于元素的数量巨大,因此在它们之间逐个写逗号是浪费时间。那么在matlab中有没有简单的方法来做到这一点呢?

提前致谢

【问题讨论】:

    标签: matlab


    【解决方案1】:

    这应该可以解决问题:

    %// example vector
    a = [4 5 6 7 8 9 10 11 12 13];
    
    %// replace all consecutive spaces with a comma
    aCSV = regexprep(num2str(a,17), '\s*', ',')
    

    输出:

    aCSV = 
        4,5,6,7,8,9,10,11,12,13
    

    【讨论】:

    • 请注意num2str 默认将浮点值转换为具有四位精度的字符串。
    • @horchler:奇怪...文档确实提到了 4 位数字,但是您的 v 上的 num2str(v) 就像一个魅力...仍然编辑了我的答案
    • 我认为我的演示数据中的num2str(v) 打印出更多数字,因为realmax 的存在。如果该元素不存在,它将恢复为仅打印最多四位小数。
    【解决方案2】:

    这是一个只使用sprintf的版本:

    v = [1 2 exp(1) 3 pi 4 5 realmax];
    s = sprintf('%.17g,',v); % Up to 17 decimal places (double precision has about 16) 
    s = s(1:end-1);          % Remove trailing comma
    

    返回

    s =
    
    1,2,2.7182818284590455,3,3.1415926535897931,4,5,1.7976931348623157e+308
    

    如果您希望进一步自定义,请参阅this article,了解有关使用sprintf 的格式字符串的详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-01
      • 2021-03-28
      • 2015-12-20
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      相关资源
      最近更新 更多