如何使用Matlab将txt中的许多2进制数转换为10进制数

如题所述

举例说明。假设有一个txt文件如下,文件名是bin.txt。
0001
0101
0010
1001

Matlab处理思路:
首先打开txt文件,并把数据读到字符串变量中。使用的命令是fopen和fread。
然后,把二进制每个数据分隔开(这就要根据txt文件中不同的分隔方式处理,我给的例子是换行符,其他的也可能是空格,也可能是分号等),并且分别转换为十进制,用命令bin2dec。

编写一个M文件如下。注意要与bin.txt文件放在同一个目录下,执行即可。
fid = fopen('bin.txt', 'r');
c = fread(fid, '*char')';
n=4; %%这里设定二进制的位数
for i=1:floor(length(c)/(n+2))+1
decimalData(i)=bin2dec(c((i-1)*(n+2)+1:(i-1)*(n+2)+n));
end
decimalData

得到结果:
decimalData =
1 5 2 9追问

大侠,出问题了。??? Index exceeds matrix dimensions.

Error in ==> b2d at 5
decimalData(i)=bin2dec(c((i-1)*(n+2)+1:(i-1)*(n+2)+n));最好能输出到另一个文本。我的文件比较大啊。

追答

你把你的原始数据给我看看。
复制一部分在这里。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-08
a=textread('c:\a.txt','%s')';%以字符形式打开文件
alpha=hex2dec(a)'; %16进制转化为10进制数,存入alpha矩阵
dlmwrite('c:\b.txt',alpha,'delimiter', ' ') %将得出数据存入新的b.txt文档
你可以参考一下啊。很容易的哈。本回答被提问者采纳
相似回答