2013-05-08 17 views
7

W programie Matlab przy drukowaniu z użyciem e, takich jak fprintf('%10.5e\n', pi/100), otrzymamy wynik 3.14159e-02. Co jednak jeśli chcę, aby numer miał wiodące zero, na przykład 0.314159e-1? Jak mam sobie z tym poradzić z Matlab?Zaczynając od zera w notacji naukowej Matlaba

Powód, dla którego pytam, to to, że próbuję wydrukować plik, który musi mieć początkowe zera. W przeciwnym razie nie obchodzi mnie to.

Dzięki.

Odpowiedz

3

nie sądzę, istnieje jakikolwiek sposób mądry zrób to:

your_number = pi; 
['0.' strrep(sprintf('%10.5e',your_number*10), '.', '')] 

>> ans = 

0.314159e+01 
1

moje rozwiązanie jest dość proste, ale ma to tylko na celu zilustrowanie. Można to zrobić samemu z niewielką funkcję, która będzie szukać odpowiednich ciągów w liczby, przyciąć go po e, dodać 0. na początku i increse przez 1 wykładnik na końcu, na przykład:

function b=fooo(a) 
b=a; 
k1 = strfind(a, '.'); 
k2 = strfind(a, 'e-'); 
suffix=num2str(str2num(b(k2+1:k2+3))+1); 
b(k2+1:end)=[]; 
b(k1)=[]; 
b=['0.' b suffix]; 

gdzie wejście jak

ans=fooo(sprintf('%10.5e\n', pi/100)) 

przyniesie odpowiedź:

ans = 
    0.314159e-1 
Powiązane problemy