0

Hello I have a cell array that contains numbers, and also strings. I want to print the cell array so that I will see only 5 number after the decimal point, the strings need to be the same

Example:

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

After writing format long this is what I receive

>> 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'

If I write format short this is what I get:

>> 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]

But I want that the output will be: (no [1x46 char] and 5 numbers after the decimal [ also 4 will be good but 5 is better])

>> 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'

Thank you

Oren
  • 4,711
  • 4
  • 37
  • 63
  • So, what have you tried so far? It should not be that hard to adapt the answer from your similar question: http://stackoverflow.com/questions/20370661/how-to-display-with-n-decimal-places-from-cell-array-in-matlab – Dennis Jaheruddin Dec 04 '13 at 09:55
  • 1
    why the new question?? just edit the old one! – Lucius II. Dec 04 '13 at 09:57
  • @DennisJaheruddin I wrote what I tried so far.. format long format short I was not able to use the methods in the other question – Oren Dec 04 '13 at 09:58
  • @LuciusDomitiusAhenobarbus I flogged the old question for delete, Because the answers to that question will not fit into this question. and it will create confusion. – Oren Dec 04 '13 at 09:59
  • Actually the answer by @EitanT would make a good base for an answer to this question. However I won't write it out unless you try it yourself first. – Dennis Jaheruddin Dec 04 '13 at 10:03
  • @DennisJaheruddin Too late, already updated mine =] – Eitan T Dec 04 '13 at 12:04

1 Answers1

1

You can try fprintf

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