matlab科学计数法问题
我有一个问题,例如'313397E9'等8位数字串被传入excel,然后读作编号'313397000000000'或'3.133970e + 014'。matlab科学计数法问题
然后通过Matlab读取并识别为数字,而不是字符串。将其转换回8位字符串的最简单方法是什么?
在此先感谢您的帮助。
Regular expressions to the rescue!您可以使用REGEXPREP将尾随零转换为Ex,其中x是您刚刚替换的零的数量。
%# convert the number to a string
nn = num2str(3.133970e+014)
nn =
313397000000000
%# replace zeros using regexprep
regexprep(nn,'([0]*)','E${num2str(length($1))}')
ans =
313397E9
这也适用,如果nn
是一个字符串单元阵列,顺便说一句,这样你就可以转换一气呵成您的号码清单。
您是否将313390000000000.0恢复为313390E9或31339E10? – 2011-06-09 14:23:30
完美的作品!实际上,好点,Jouni ......我想没有办法知道价值应该是第一位的...... – Alec 2011-06-09 14:33:34
@Jouni:313390000000000转换为31339E10 - 不确定这是否是OP的真正意图。当然,如果这个想法总是有6位数字,然后是E9,那么一切都将是相当平凡的。另外,313390000000000.0将被转换为313393E10.E1。但是,如果以3e + 014之类的数字开头,则不应出现此输入。如果有必要,当然可以在正则表达式中解决这个问题。 – Jonas 2011-06-09 15:06:07
您将不得不告诉我们MATLAB和Excel之间的通信机制 – 2011-06-09 13:43:44
它使用actxserver打开excel,然后获取特定工作表,然后value =(sheet.Range(['A2:A32000'])。value )。这就是我没有写的大量代码,可能不应该搞砸。无论如何,只要它是一个数字就可以将它转换回8位数字? – Alec 2011-06-09 13:49:58
数字如何存储在MATLAB中。他们真的是字符串吗?你想如何将它们存储在Excel中?字符串或数字? – 2011-06-09 13:58:17