【问题标题】:How to display with n decimal places from cell array that also contain strings in matlab如何在matlab中也包含字符串的单元格数组中显示n个小数位
【发布时间】:2013-12-04 09:45:39
【问题描述】:

您好,我有一个包含数字和字符串的元胞数组。我想打印单元格数组,这样我只能看到小数点后的 5 个数字,字符串需要相同

例子:

for i=1:3
    c{1,i*2-1} = pi
    c{2,i*2-1} = pi/2
    c{3,i*2-1} = pi/4
    c{4,i*2-1} = 2^0.5

    c{1,i*2} = 'emperiment_number_7_result_21_total_5_and_ext'
    c{2,i*2} = 'emperiment_number_4_result_21_total_5_and_ext'
    c{3,i*2} = 'emperiment_number_6_result_21_total_5_and_ext'
    c{4,i*2} = 'emperiment_number_12_result_11_total_5_and_ext'
end

写完 format long 这是我收到的

>> c
c = 
    [3.141592653589793]    'emperiment_number_7_result_21_total_5_and_ext'     [3.141592653589793]    'emperiment_number_7_result_21_total_5_and_ext'     [3.141592653589793]    'emperiment_number_7_result_21_total_5_and_ext' 
    [1.570796326794897]    'emperiment_number_4_result_21_total_5_and_ext'     [1.570796326794897]    'emperiment_number_4_result_21_total_5_and_ext'     [1.570796326794897]    'emperiment_number_4_result_21_total_5_and_ext' 
    [0.785398163397448]    'emperiment_number_6_result_21_total_5_and_ext'     [0.785398163397448]    'emperiment_number_6_result_21_total_5_and_ext'     [0.785398163397448]    'emperiment_number_6_result_21_total_5_and_ext' 
    [1.414213562373095]    'emperiment_number_12_result_11_total_5_and_ext'    [1.414213562373095]    'emperiment_number_12_result_11_total_5_and_ext'    [1.414213562373095]    'emperiment_number_12_result_11_total_5_and_ext'

如果我写短格式,这就是我得到的:

>> c
c = 
    [3.1416]    [1x45 char]    [3.1416]    [1x45 char]    [3.1416]    [1x45 char]
    [1.5708]    [1x45 char]    [1.5708]    [1x45 char]    [1.5708]    [1x45 char]
    [0.7854]    [1x45 char]    [0.7854]    [1x45 char]    [0.7854]    [1x45 char]
    [1.4142]    [1x46 char]    [1.4142]    [1x46 char]    [1.4142]    [1x46 char]

但我希望输出为:(无 [1x46 字符] 和小数点后 5 个数字 [4 也不错,但 5 更好])

>> c
c = 
    [3.14159]    'emperiment_number_7_result_21_total_5_and_ext'     [3.14159]    'emperiment_number_7_result_21_total_5_and_ext'     [3.14159]    'emperiment_number_7_result_21_total_5_and_ext' 
    [1.57079]    'emperiment_number_4_result_21_total_5_and_ext'     [1.57079]    'emperiment_number_4_result_21_total_5_and_ext'     [1.57079]    'emperiment_number_4_result_21_total_5_and_ext' 
    [0.78539]    'emperiment_number_6_result_21_total_5_and_ext'     [0.78539]    'emperiment_number_6_result_21_total_5_and_ext'     [0.78539]    'emperiment_number_6_result_21_total_5_and_ext' 
    [1.41421]    'emperiment_number_12_result_11_total_5_and_ext'    [1.41421]    'emperiment_number_12_result_11_total_5_and_ext'    [1.41421]    'emperiment_number_12_result_11_total_5_and_ext'

谢谢

【问题讨论】:

  • 那么,到目前为止,您尝试了什么?从您的类似问题中调整答案应该不难:stackoverflow.com/questions/20370661/…
  • 为什么是新问题??只需编辑旧的!
  • @DennisJaheruddin 我写了到目前为止我尝试过的内容.. format long format short 我无法使用其他问题中的方法
  • @LuciusDomitiusAhenobarbus 我将旧问题标记为删除,因为该问题的答案不适合该问题。这会造成混乱。
  • 实际上@EitanT 的回答将为回答这个问题奠定良好的基础。不过我不会写出来,除非你先自己试试。

标签: string matlab format cell-array


【解决方案1】:

你可以试试fprintf

    for i=1:3
       fprintf('%1.5f %s %3.5f %s %5.5f %6s \n',c{i,:})
    end

【讨论】:

  • 很好,但是如果字符串的大小不同怎么办?那么数据不稳..
  • @user2236185 要将字符串截断为固定长度?
猜你喜欢
  • 2011-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多