前言

本文中读与写的txt数据格式适用于一行一个数据的情况,其他情况请自行结合修改。如下图所示:
在这里插入图片描述

读txt文件

读txt中的十进制数据到MATLAB

%% 此代码用于读取TXT文件的十进制数据到MATLAB
% 指定txt文件路径
file_path = 'F:\Add Window_and_FFT Module Design\Vivado_project\rtl\data_decimal.txt';%单引号中放文件地址
% 读取txt文件
data = load(file_path)';%根据需要加单引号转置
disp('读取数据完成');

读txt数据的其他进制数据转为十进制到MATLAB

修改txt的读取地址,修改txt中的数据进制txt_radix,修改txt中数据对应的二进制位数bits

默认是有符号数转换,无符号时注释掉标注部分。

%% 读txt数据的其他进制数据转为十进制到MATLAB
%读取地址与参数设置
txtdatacell = textscan(fopen( 'F:\Add Window_and_FFT Module Design\Vivado_project\rtl\bin_Signal.txt'),'%s');
txt_radix = 2 ; %读取的txt数据的进制
bits = 16;		% 信号对应的二进制位数,读取补码数据时使用
%用于存储数据的变量声明
txtdata = txtdatacell{1};
length_txtdata = length(txtdata);% txt中的数据个数
decdata = zeros(length_txtdata,1);	
%读取主体部分
for i=1:length_txtdata
    decdata(i) = base2dec( txtdata{i},txt_radix );	%将所有进制数转换为无符号十进制数
    %begin:无符号时注释此部分
    if(decdata(i)>= 2^(bits-1))	% 如果补码对应的十进制结果大于等于一半
            decdata(i)=base2dec(txtdata{i},txt_radix )-2^bits;% 转换为负数
    end
    %end:无符号时注释此部分
end
disp('读取转换完成');

读txt内容到MATLAB

txtdatacell = textscan(fopen( 'F:\Add Window_and_FFT Module Design\Vivado_project\rtl\bin_Signal.txt'),'%s');
txtdata = txtdatacell{1};
disp('读取完成');

写txt文件

总:将MATLAB生成的10进制数据转换成十进制和radix进制写入txt

此代码包含了生成信号数据,输出十进制txt,输出其他进制txt。后两小节的"分"为该总部分的一小部分。

%本代码用于将MATLAB生成的十进制数据转为radix进制生成txt文件,radix可设为2的次方,如:2 4 8 16...
%根据需要设置生成信号和参数设置部分,修改写txt主体部分文件输出地址
%参数设置中radix表示将Signal转换成该进制数据,默认生成10进制和radix进制的两个txt数据
%工作区中Signal是txt中对应的十进制数据;radix_data_cell是txt中对应的其他进制数据
clear all;close all;clc; %清理工作区,关闭所有窗口,清空文本
%% 信号生成与参数设置
%生成信号
fs = 128;        %采样率
f_Signal = 5;    %信号频率
Signal_N = 128;  %信号点数
t = 0:1/fs:(Signal_N-1)/fs; %取Signal_N点信号观察
scale = 2^15;    %扩大倍数
Signal1 = cos(2*pi*f_Signal*t)*scale;
Signal = round(Signal1)';%取整
%参数设置
bits = 16;       %信号被量化后的二进制位数
radix = 2;       %转换成'2的次方进制可选'的数据输出,如:2 4 8 16...
radix_bitnum = log2(radix);%进制对应的二进制位数,例16进制对应4位二进制
Converte_bits = ceil(bits/radix_bitnum);%信号转换成radix进制的位数,如14bits二进制可转为4位十六进制数
%% 写txt主体部分
%将生成的十进制数据写入txt文件中
fid=fopen('F:\Add Window_and_FFT Module Design\Vivado_project\rtl\data_decimal.txt','w');
for i = 1:numel(Signal)-1
    fprintf(fid, '%8d\r\n', Signal(i));
end
    fprintf(fid, '%8d', Signal(end));
fclose(fid);
disp('十进制数据已写入到txt文件。');
%将生成的进制数据写入txt文件中
% 初始化一个 cell 数组用于存储转换后的进制字符串
radix_data_cell = cell(length(Signal), 1);
% 循环处理每个元素
for i=1:length(Signal)
    if (Signal(i) == 2^(bits-1))
         radix_data_cell{i}= dec2base((Signal(i)-1),radix,Converte_bits);%补码范围不包括+2^(bits-1)
    else
         radix_data_cell{i}= dec2base(Signal(i)+(Signal(i)<0)*2^bits,radix,Converte_bits);%(Signal(i)<0用于量化为负数补码的情况
    end
end
% 打开一个文本文件以写入模式
fid = fopen('F:\Add Window_and_FFT Module Design\Vivado_project\rtl\data_radix.txt', 'w');
% 循环遍历 cell 数组并将每个元素写入文件
for i = 1:numel(radix_data_cell)-1
    fprintf(fid, '%s\n', radix_data_cell{i});
end
    fprintf(fid, '%s', radix_data_cell{end});
    %fprintf(fid,';'); %最后一行分号结尾
% 关闭文件
fclose(fid);
disp('其他进制数据已写入到txt文件。');

分:将MATLAB中十进制数据以’radix进制’数据格式写入txt文件

%% 将MATLAB中十进制数据以'radix进制'数据格式写入txt文件
Signal = decdata;%修改decdata为需要转换的数据,需要为整数,用round等取整
bits = 16;      %信号对应的二进制位数
radix = 16;      %转换成'2的次方进制可选'的数据输出,如:2 4 8 16...
radix_bitnum = log2(radix);%进制对应的二进制位数,例16进制对应4位二进制
Converte_bits = ceil(bits/radix_bitnum);%信号转换成radix进制的位数,如14bits二进制可转为4位十六进制数
% 初始化一个 cell 数组用于存储转换后的进制字符串
radix_data_cell = cell(length(Signal), 1);
% 循环处理每个元素
for i=1:length(Signal)
    if (Signal(i) == 2^(bits-1))
         radix_data_cell{i}= dec2base((Signal(i)-1),radix,Converte_bits);%补码范围不包括+2^(bits-1)
    else
         radix_data_cell{i}= dec2base(Signal(i)+(Signal(i)<0)*2^bits,radix,Converte_bits);%(Signal(i)<0用于量化为负数补码的情况
    end
end
% 打开一个文本文件以写入模式
fid = fopen('F:\Add Window_and_FFT Module Design\Vivado_project\rtl\data_radix.txt', 'w');
% 循环遍历 cell 数组并将每个元素写入文件
for i = 1:numel(radix_data_cell)-1
    fprintf(fid, '%s\n', radix_data_cell{i});
end
    fprintf(fid, '%s', radix_data_cell{end});
    %fprintf(fid,';'); %最后一行分号结尾
% 关闭文件
fclose(fid);
disp('其他进制数据已写入到txt文件。');

分:将MATLAB中十进制数据写入txt文件

%% 将生成的十进制数据写入txt文件中
Signal = decdata;%修改decdata为需要写入txt的数据
fid=fopen('F:\Add Window_and_FFT Module Design\Vivado_project\rtl\data_decimal.txt','w');
for i = 1:numel(Signal)-1
    fprintf(fid, '%8d\r\n', Signal(i));
end
    fprintf(fid, '%8d', Signal(end));
fclose(fid);
disp('十进制数据已写入到txt文件。');

读txt数据进制转换后写入新的txt

将上面小节的读txt数据的其他进制数据转为十进制到MATLAB分:将MATLAB中十进制数据以'radix进制'数据格式写入txt文件组合即可实现进制转换。修改对应参数设置与地址。


📣您有任何问题,都可以在评论区和我交流📃!
📣本文由 YprgDay 原创,首发于CSDN平台🐵,博客主页:YprgDay的主页
📣您的支持是我持续创作的最大动力!如果本文对您有帮助,还请多多点赞👍、评论💬和收藏⭐!


相关文章

二维平面阵列波束赋形原理和Matlab仿真

阵面左下角天线位于坐标原点,将坐标原点阵元设为参考阵元,计算每个阵元相对于该参考阵元的入射波程差,从而来计算每个阵元接收的回波信号。实现波束赋形的最基本的方法是对各个天线阵元的信号进行适当延迟后相加,使目标方向的信号同相叠加得到增强,而其他方向均有不同程度的削弱,该方法通常用于模拟信号.根据上述理论推导可以仿真任意平面阵列的方向图,这里对两种典型的阵列(矩形平面阵列和圆形阵列)进行Matlab仿真,其余类型的阵列在此基础上修改即可。根据上述圆形阵列公式做仿真,得到下述的三维空间方向图。

多旋翼无人机组合导航系统-多源信息融合算法(Matlab代码实现)

无人机的主要导航参数就是依靠多传感器信息融合获得的,因此信息融合技术是组合导航系统的关键技术,目前已成为国内外学者研究的热点问题。随着多旋翼无人机向自主化和智能化发展,多旋翼无人机对其自身导航系统的性能提出了更高的要求。针对这一矛盾,本文提出将无人机自带的微型惯导系统与GPS通过信息融合技术相结合,构成INS/GPS组合导航系统,由此能够提升导航系统的整体性能。[1]刘洪剑,王耀南,谭建豪,李树帅,钟杭.一种旋翼无人机组合导航系统设计及应用[J].传感技术学报,2017,30(02):331-336.

【WSN】基于蚁群算法的WSN路由协议(最短路径)消耗节点能量研究(Matlab代码实现)

比如,如果某个路径的能量消耗较大,ACO可以选择其他能量消耗相对较小的路径,以减少节点的能量消耗。在无蚁群算法(ACO)的情况下的无线传感器网络(WSN)中,当使用相同的路由协议(最短路径)时,节点能量会不断消耗,最终导致节点死亡。而在没有ACO算法的情况下,网络中的节点并没有考虑到能量消耗的差异,因此无法做出针对性的路由选择。总而言之,通过研究基于蚁群算法的路由协议(最短路径)对节点能量的消耗,我们可以深入理解WSN网络中能量问题的关键因素,并为解决节点能量消耗过高的问题提供有效的方法。

图像的视网膜变换研究(Matlab代码实现)

总而言之,图像的视网膜变换是一种受到人眼启发的图像处理技术,通过对远离中心的像素进行平均化,将原始的24x24像素图像转换为更紧凑且有效地表示形式。这种转换不仅能减小数据的维度,还能突出图像的特征,为各种图像处理任务提供更好的解决方案。受到人眼中的中央凹概念的启发,视网膜变换将图像的中心像素作为基准点,并计算其他像素离中心像素的距离。然后,通过对这些远离中心的像素进行平均化,图像最终被转换为132维的表示形式。图像的视网膜变换是受到人眼启发的一种技术,它通过平均化远离给定点的像素来进行处理。

【具有路由 WSN 模拟器的随机方式移动】具有路由 WSN 模拟器的随机方式移动(Matlab代码实现)

这种随机的节点移动模拟了真实世界中节点的行为,因为无线传感器网络中的节点通常不会按照固定的轨迹移动。最后,我们评估了我们提出的方法的效果和性能。我们通过比较在使用我们的方法时的数据传输延迟、能耗和网络吞吐量等指标与使用其他方法时的指标,来评估我们的方法的优劣。通过这些工作步骤,我们能够更好地理解路由 WSN 模拟器的随机方式移动,并评估其在无线传感器网络中的应用效果和性能。我们的研究对于改进无线传感器网络的路由策略和性能优化具有重要意义,并可以为实际网络部署提供有价值的参考。行百里者,半于九十。

【图像误差测量】测量 2 张图像之间的差异,并测量图像质量(Matlab代码实现)

图像误差测量的研究旨在改进现有的方法,并开发新的有效算法来更准确地评估图像之间的差异。另外,随着深度学习和人工智能的发展,还涌现出一些基于神经网络的图像误差测量方法,如基于卷积神经网络 (CNN) 的结构相似度指数 (CNN-SSIM) 和感知损失 (Perceptual Loss) 等。通过比较原始图像和经过处理后的图像,可以确定图像处理算法对图像所做的修改,并评估其对图像质量的影响。6. 通用图像质量指数 (IQI):综合考虑了图像的亮度、对比度、锐度和颜色等方面的信息,以评估图像的整体质量。

毫米波V2I网络的链路层仿真研究(Matlab代码实现)

综上所述,本文的研究通过链路层仿真,对毫米波 V2I 网络在具有低层现代建筑的城市环境中的性能进行了深入的探究。通过模拟多条车辆路线,并评估关键指标,我们为毫米波 V2I 技术的优化和应用提供了有力的支持,并为相关利益相关者提供了宝贵的指导。通过收集仿真结果,我们可以深入了解毫米波 V2I 网络的潜力和局限,并为将来的优化和改进提供有价值的指导。毫米波 V2I 技术是一种用于车辆到基础设施的通信的创新解决方案,它利用毫米波频段的高带宽和低延迟特性,实现了快速而可靠的车辆与城市基础设施之间的通信。

【图像分割】图像检测(分割、特征提取)、各种特征(面积等)的测量和过滤(Matlab代码实现)

【图像分割】图像检测(分割、特征提取)、各种特征(面积等)的测量和过滤本文提供了一个适合初学者的教程,旨在演示图像检测(分割、特征提取)以及各种特征(如面积)的测量和过滤(只提取某些对象)。首先,该教程介绍了如何找到图像中的所有对象(硬币),然后根据指定的直径过滤结果,筛选出特定直径的对象。通过一个简单的示例,展示了阈值处理、标记和区域属性的基本概念。对于那些刚开始接触 MATLAB 图像处理功能的同学来说,这个教程是一个很好的起点。在他们深入学习更复杂的算法之前,可以通过这个教程加深对基本概念和技术的理解

【红外图像增强】基于引力和侧向抑制网络的红外图像增强模型(Matlab代码实现)

红外热像仪产生的彩色红外图像中经常会遇到低对比度、噪点和边缘模糊等问题。首先,获得彩色红外图像各维的总引力信息。使用均值滤波器降低噪声,使用横向抑制网络进行分辨率和边缘检测,使用区域重力因子进行对比度控制。我们的方法的实现简单易懂,并产生更准确的结果。实验结果表明,所提方法能够消除噪声、模糊和低对比度,并且比其他方法更能改善红外图像的细节。红外热像仪产生的彩色红外图像中经常会遇到低对比度、噪点和边缘模糊等问题。文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

【红外与可见光图像融合】离散平稳小波变换域中基于离散余弦变换和局部空间频率的红外与视觉图像融合方法(Matlab代码实现)

为了提高红外和视觉图像融合的性能,并提供更好的视觉效果,本文提出了一种新的融合方法。通过将红外和可见光图像的特征进行合理的融合,我们可以获得更全面和准确的图像信息,从而提高图像的识别和分析能力。总之,基于SWT_DCT_SF的红外与可见光图像融合方法是一种有效的融合方法,能够提高红外和可见光图像的融合效果,并提供更好的视觉效果。基于SWT_DCT_SF的红外与可见光图像融合方法是一种通过结合离散稳态小波变换(DSWT)、离散余弦变换(DCT)和局部空间频率(LSF)来混合融合红外和可见光图像的方法。

使用显著性检测的可见光和红外图像的两尺度图像融合(Matlab代码实现)

图像融合是将互补的源信息集成到合成图像中的过程。该方法是有益的,因为本文引入的视觉显著性提取过程可以很好地突出源图像的显著性信息。在军事、导航、隐蔽武器探测等应用中,不同的成像系统,如电荷耦合器件(CCD)或可见光(VI)和前视红外(FLIR)或红外(IR)用于监测目标场景。来自这些图像的有用或补充信息应集成到单个图像中,以提供比任何一个单个源图像更准确的场景描述。在目标级图像融合中,使用从每个源图像派生的属性描述符、特征和对象标签进行融合。是将源图像中的互补或有用信息组合或整合到融合图像中的现象。

【图像处理】使用各向异性滤波器和分割图像处理从MRI图像检测脑肿瘤(Matlab代码实现)

脑肿瘤是一种致命的疾病,没有MRI技术,无法可靠地检测到。为了为MRI图像的形态学操作铺平道路,我们首先使用各向异性扩散滤波器对图像进行滤波,以降低像素之间的对比度。然后,我们调整图像大小,并手动将其转换为黑白图像,通过阈值处理来初步筛选出肿瘤可能存在的区域。这个项目的更大目标是建立一个包含从不同角度拍摄的特定人类MRI图像中的肿瘤2D图像数据的数据库,并通过对这些图像进行分析来确定肿瘤的精确3D位置。尽管这个模拟程序在大多数情况下可以给出准确的结果,但对于过小的肿瘤或具有中空结构的肿瘤,它可能无法执行。

【交互式阈值二进制图像】采用彩色或单色图像通过交互/手动方式阈值单色图像或彩色图像的单个色带研究(Matlab代码实现)

阈值图像是一种二进制图像,可以用作其他图像的遮罩图像。在阈值范围内的像素将在中间图像中显示为二进制图像(黑/白),而原始图像的像素将在左侧图像中显示为遮罩(灰度或彩色)。通过使用交互式阈值二进制图像的方法,用户可以更加灵活地处理彩色或单色图像,并根据需要调整阈值范围,从而得到满足自己需求的二值化图像。该方法的输入包括要开始的低阈值和高阈值,以及图像文件名或图像矩阵。本文介绍了一种交互式阈值二进制图像的方法。该方法可以应用于彩色或单色图像,并且允许用户通过滑块的方式以交互/手动的方式设置图像的阈值范围。

面向无线传感器网络WSN的增强型MODLEACH设计与仿真(Matlab代码实现)

关于CH(簇头)选举算法,数据聚合,减少传输次数和不同功率水平的研究正在进行中。此外,它还使用不同的集群头选择算法,其中节点的剩余能量大于阈值,它仍然是下一轮的集群头。我们通过在HEED(混合节能分布式聚类)中使用不同的簇头选择方程来增强MODLEACH,使其根据节点的剩余能量选择节点作为簇头。此外,我们还通过放置能量空洞去除机制来增强 MODLEACH,这样如果节点的能量低于阈值,它将节点置于睡眠模式。我们针对一个简单的温度传感应用评估了该协议的性能,并与其他一些协议LEACH,DEEC,SEP,
返回
顶部