2015-01-15 15 views
0

我有幾個包含數字的變量。具有前導點的格式編號/指數在Matlab中的點號

我需要'.xxxxxE + YY'作爲字符串的樣式。

例如'250'將是'.25000E + 03',沒有0(總是'。'領先)。

我嘗試了幾種方法,閱讀Matlab的幫助和谷歌搜索和搜索,但沒有運氣到目前爲止。

有誰知道這個把戲嗎?謝謝!

+0

歡迎SO!請告訴我們你目前的嘗試。 – bish

+0

這不是標準的工程表示法,至少不是通常由* printf樣式函數輸出的。如果你真的需要這樣的東西,你可能需要一起破解一些東西。 – horchler

+0

您是否想根據該格式手動生成字符串? –

回答

0

這是一種方法。我假設這些數字是正數(否則你需要單獨處理負號)。

x = 250; 
e = floor(log10(x))+1; 
s1 = sprintf('.%5i', round(x*10^(5-e))); 
s2 = sprintf('%02d', abs(e)); 
s = [s1 'E' repmat('+', e>=0) repmat('-', e<0) s2]; 

字符串的repmat('+', e>=0) repmat('-', e<0)部分僅僅是一個引入的指數a '+''-'符號(的repmat S的一個給出了一個單個字符,另給出了一個空字符串)方式。當然也可以用if-else條款來完成。

示例結果:

  • 250'.25000E+03'
  • 1.23456'.12346E+01'
  • .1'.10000E+00
  • .'.12346E-01'
+0

你好,路易斯,謝謝你的建議。這工作不錯,但僅適用於數字大於1,我沒有負數,但確實有數字0和1之間 1.2345給出.12345E + 01 0.1給出了.100000E + -1 1給出.100000E + 00 – chiefymuc

+0

對不起,格式說明符中的「+」放錯了位置。現在試試 –

+0

但是現在指數可能少於兩位數字。在這上面工作 –