将文本文件读取到数组中(0和1的文件)



我有一个包含0和1随机数的文本文件,我想在Matlab中读取它,并获得数组中的每个元素

目标:我有两个文本文件,我想比较一下,看看它们是否相同,以及有多大区别,事实上,这两个文件是:1( 我通过通信线路发送的原始文件2( 接收到的文件应该与发送文件相同

我的代码示例:

for i=1:1:size
if (send[i] ~= received[i]) error++;
end

但我需要知道如何从文本文件中获得这两个数组;0";以及";1〃;在一行中

由于您想检查两个文件的内容是否相同,我认为您不需要担心它们内容的格式或0和1的顺序,它们应该完全相同。您可以使用以下代码读取整个文本文件,并将其存储在char矢量中:

C = char(join(readlines(filename), ''));

要比较两个文件的内容并找到错误百分比,您可以执行以下操作:

act =  char(join(readlines(actualfilename), ''));
exp = char(join(readlines(expectedfilename), ''));
err = (sum(act~=exp))/length(act);

但您也应该检测两个文件是否包含不同数量的字符:

act =  char(join(readlines(actualfilename), ''));
exp = char(join(readlines(expectedfilename), ''));
al = length(act); % actual length
el = length(exp); % expected length
dl = abs(al-el);
if (dl>0)
ml = min(al, el); % min length
act = act(1:ml); % shorten act if needed
exp = exp(1:ml); % shorten exp if needed
end
err = (sum(act~=exp)+dl)/al % error

请注意,在第二种情况下,如果在文件中间添加或丢失了一个字符,则所有后续字符都将被视为错误。

读取文本文件:

如果文本文件配置有空格或换行符:

Text.txt(换行(

0
1
0
1
1

Text.txt(空格(

1 0 1 0 1 1

可以使用格式规范为%dfscanf()函数对数据进行扫描,以整数形式扫描文件。

File_Name = "Text.txt";
File_ID = fopen(File_Name);
Binary = fscanf(File_ID,'%d');

如果文本文件的字符旁边/连接在同一行,且没有空格:

Text.txt(单行,无空格(

01011

扫描文本文件可以使用格式规范,%s指示以字符串形式读取文件。可以使用split()cell2mat()str2num()将该字符串拆分并转换为数组。

split()→将字符串拆分为具有单个位/二进制的单元格数组
cell2mat()→将单元格数组转换为字符数组
str2num()→将字符数组转换为数字双数组

File_Name = "Text.txt";
File_ID = fopen(File_Name);
Binary = fscanf(File_ID,'%s');
Binary = split(Binary,'');
Binary = str2num(cell2mat(Binary(2:end-1))).';

比较评估错误数量:

错误检查可以通过以元素方式对数组进行逻辑比较来完成。然后通过使用nnz()(非零数(函数,我们可以计算条件为真的次数;1〃;。这里的条件是当两个二进制信号CCD_ 12和CCD_。

代码段:

Error = nnz(Binary_1 ~= Binary_2);
Error

完整脚本选项1(换行符/空格文本文件(:

File_Name = "Text_1.txt";
File_ID = fopen(File_Name);
Binary_1 = fscanf(File_ID,'%d');
fclose(File_ID);
File_Name = "Text_2.txt";
File_ID = fopen(File_Name);
Binary_2 = fscanf(File_ID,'%d');
fclose(File_ID);
clearvars -except Binary_1 Binary_2
Error = nnz(Binary_1 ~= Binary_2);
Error

完整脚本选项2(单行,无空格文本文件(:

File_Name = "Text_1.txt";
File_ID = fopen(File_Name);
Binary_1 = fscanf(File_ID,'%s');
Binary_1 = split(Binary_1,'');
Binary_1 = str2num(cell2mat(Binary_1(2:end-1))).';
File_Name = "Text_2.txt";
File_ID = fopen(File_Name);
Binary_2 = fscanf(File_ID,'%s');
Binary_2 = split(Binary_2,'');
Binary_2 = str2num(cell2mat(Binary_2(2:end-1))).';
fclose(File_ID);
clearvars -except Binary_1 Binary_2
Error = nnz(Binary_1 ~= Binary_2);
Error

使用MATLAB R2019b运行

相关内容

  • 没有找到相关文章

最新更新