最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Matlab實(shí)現(xiàn)讀寫(xiě)txt文件數(shù)據(jù)與進(jìn)制轉(zhuǎn)換

 更新時(shí)間:2023年12月14日 11:35:38   作者:YprgDay  
這篇文章主要為大家詳細(xì)介紹了Matlab實(shí)現(xiàn)讀寫(xiě)txt文件數(shù)據(jù)與進(jìn)制轉(zhuǎn)換的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

前言

本文中讀與寫(xiě)的txt數(shù)據(jù)格式適用于一行一個(gè)數(shù)據(jù)的情況,其他情況請(qǐng)自行結(jié)合修改。如下圖所示:

讀txt文件

讀txt中的十進(jìn)制數(shù)據(jù)到MATLAB

%% 此代碼用于讀取TXT文件的十進(jìn)制數(shù)據(jù)到MATLAB
% 指定txt文件路徑
file_path = 'F:\Add Window_and_FFT Module Design\Vivado_project\rtl\data_decimal.txt';%單引號(hào)中放文件地址
% 讀取txt文件
data = load(file_path)';%根據(jù)需要加單引號(hào)轉(zhuǎn)置
disp('讀取數(shù)據(jù)完成');

讀txt數(shù)據(jù)的其他進(jìn)制數(shù)據(jù)轉(zhuǎn)為十進(jìn)制到MATLAB

修改txt的讀取地址,修改txt中的數(shù)據(jù)進(jìn)制txt_radix,修改txt中數(shù)據(jù)對(duì)應(yīng)的二進(jìn)制位數(shù)bits

默認(rèn)是有符號(hào)數(shù)轉(zhuǎn)換,無(wú)符號(hào)時(shí)注釋掉標(biāo)注部分。

%% 讀txt數(shù)據(jù)的其他進(jìn)制數(shù)據(jù)轉(zhuǎn)為十進(jìn)制到MATLAB
%讀取地址與參數(shù)設(shè)置
txtdatacell = textscan(fopen( 'F:\Add Window_and_FFT Module Design\Vivado_project\rtl\bin_Signal.txt'),'%s');
txt_radix = 2 ; %讀取的txt數(shù)據(jù)的進(jìn)制
bits = 16;        % 信號(hào)對(duì)應(yīng)的二進(jìn)制位數(shù),讀取補(bǔ)碼數(shù)據(jù)時(shí)使用
%用于存儲(chǔ)數(shù)據(jù)的變量聲明
txtdata = txtdatacell{1};
length_txtdata = length(txtdata);% txt中的數(shù)據(jù)個(gè)數(shù)
decdata = zeros(length_txtdata,1);    
%讀取主體部分
for i=1:length_txtdata
    decdata(i) = base2dec( txtdata{i},txt_radix );    %將所有進(jìn)制數(shù)轉(zhuǎn)換為無(wú)符號(hào)十進(jìn)制數(shù)
    %begin:無(wú)符號(hào)時(shí)注釋此部分
    if(decdata(i)>= 2^(bits-1))    % 如果補(bǔ)碼對(duì)應(yīng)的十進(jìn)制結(jié)果大于等于一半
            decdata(i)=base2dec(txtdata{i},txt_radix )-2^bits;% 轉(zhuǎn)換為負(fù)數(shù)
    end
    %end:無(wú)符號(hào)時(shí)注釋此部分
end
disp('讀取轉(zhuǎn)換完成');

讀txt內(nèi)容到MATLAB

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

寫(xiě)txt文件

總:將MATLAB生成的10進(jìn)制數(shù)據(jù)轉(zhuǎn)換成十進(jìn)制和radix進(jìn)制寫(xiě)入txt

此代碼包含了生成信號(hào)數(shù)據(jù),輸出十進(jìn)制txt,輸出其他進(jìn)制txt。后兩小節(jié)的"分"為該總部分的一小部分。

%本代碼用于將MATLAB生成的十進(jìn)制數(shù)據(jù)轉(zhuǎn)為radix進(jìn)制生成txt文件,radix可設(shè)為2的次方,如:2 4 8 16...
%根據(jù)需要設(shè)置生成信號(hào)和參數(shù)設(shè)置部分,修改寫(xiě)txt主體部分文件輸出地址
%參數(shù)設(shè)置中radix表示將Signal轉(zhuǎn)換成該進(jìn)制數(shù)據(jù),默認(rèn)生成10進(jìn)制和radix進(jìn)制的兩個(gè)txt數(shù)據(jù)
%工作區(qū)中Signal是txt中對(duì)應(yīng)的十進(jìn)制數(shù)據(jù);radix_data_cell是txt中對(duì)應(yīng)的其他進(jìn)制數(shù)據(jù)
clear all;close all;clc; %清理工作區(qū),關(guān)閉所有窗口,清空文本
%% 信號(hào)生成與參數(shù)設(shè)置
%生成信號(hào)
fs = 128;        %采樣率
f_Signal = 5;    %信號(hào)頻率
Signal_N = 128;  %信號(hào)點(diǎn)數(shù)
t = 0:1/fs:(Signal_N-1)/fs; %取Signal_N點(diǎn)信號(hào)觀(guān)察
scale = 2^15;    %擴(kuò)大倍數(shù)
Signal1 = cos(2*pi*f_Signal*t)*scale;
Signal = round(Signal1)';%取整
%參數(shù)設(shè)置
bits = 16;       %信號(hào)被量化后的二進(jìn)制位數(shù)
radix = 2;       %轉(zhuǎn)換成'2的次方進(jìn)制可選'的數(shù)據(jù)輸出,如:2 4 8 16...
radix_bitnum = log2(radix);%進(jìn)制對(duì)應(yīng)的二進(jìn)制位數(shù),例16進(jìn)制對(duì)應(yīng)4位二進(jìn)制
Converte_bits = ceil(bits/radix_bitnum);%信號(hào)轉(zhuǎn)換成radix進(jìn)制的位數(shù),如14bits二進(jìn)制可轉(zhuǎn)為4位十六進(jìn)制數(shù)
%% 寫(xiě)txt主體部分
%將生成的十進(jìn)制數(shù)據(jù)寫(xiě)入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('十進(jìn)制數(shù)據(jù)已寫(xiě)入到txt文件。');
%將生成的進(jìn)制數(shù)據(jù)寫(xiě)入txt文件中
% 初始化一個(gè) cell 數(shù)組用于存儲(chǔ)轉(zhuǎn)換后的進(jìn)制字符串
radix_data_cell = cell(length(Signal), 1);
% 循環(huán)處理每個(gè)元素
for i=1:length(Signal)
    if (Signal(i) == 2^(bits-1))
         radix_data_cell{i}= dec2base((Signal(i)-1),radix,Converte_bits);%補(bǔ)碼范圍不包括+2^(bits-1)
    else
         radix_data_cell{i}= dec2base(Signal(i)+(Signal(i)<0)*2^bits,radix,Converte_bits);%(Signal(i)<0用于量化為負(fù)數(shù)補(bǔ)碼的情況
    end
end
% 打開(kāi)一個(gè)文本文件以寫(xiě)入模式
fid = fopen('F:\Add Window_and_FFT Module Design\Vivado_project\rtl\data_radix.txt', 'w');
% 循環(huán)遍歷 cell 數(shù)組并將每個(gè)元素寫(xiě)入文件
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,';'); %最后一行分號(hào)結(jié)尾
% 關(guān)閉文件
fclose(fid);
disp('其他進(jìn)制數(shù)據(jù)已寫(xiě)入到txt文件。');

分:將MATLAB中十進(jìn)制數(shù)據(jù)以’radix進(jìn)制’數(shù)據(jù)格式寫(xiě)入txt文件

%% 將MATLAB中十進(jìn)制數(shù)據(jù)以'radix進(jìn)制'數(shù)據(jù)格式寫(xiě)入txt文件
Signal = decdata;%修改decdata為需要轉(zhuǎn)換的數(shù)據(jù),需要為整數(shù),用round等取整
bits = 16;      %信號(hào)對(duì)應(yīng)的二進(jìn)制位數(shù)
radix = 16;      %轉(zhuǎn)換成'2的次方進(jìn)制可選'的數(shù)據(jù)輸出,如:2 4 8 16...
radix_bitnum = log2(radix);%進(jìn)制對(duì)應(yīng)的二進(jìn)制位數(shù),例16進(jìn)制對(duì)應(yīng)4位二進(jìn)制
Converte_bits = ceil(bits/radix_bitnum);%信號(hào)轉(zhuǎn)換成radix進(jìn)制的位數(shù),如14bits二進(jìn)制可轉(zhuǎn)為4位十六進(jìn)制數(shù)
% 初始化一個(gè) cell 數(shù)組用于存儲(chǔ)轉(zhuǎn)換后的進(jìn)制字符串
radix_data_cell = cell(length(Signal), 1);
% 循環(huán)處理每個(gè)元素
for i=1:length(Signal)
    if (Signal(i) == 2^(bits-1))
         radix_data_cell{i}= dec2base((Signal(i)-1),radix,Converte_bits);%補(bǔ)碼范圍不包括+2^(bits-1)
    else
         radix_data_cell{i}= dec2base(Signal(i)+(Signal(i)<0)*2^bits,radix,Converte_bits);%(Signal(i)<0用于量化為負(fù)數(shù)補(bǔ)碼的情況
    end
end
% 打開(kāi)一個(gè)文本文件以寫(xiě)入模式
fid = fopen('F:\Add Window_and_FFT Module Design\Vivado_project\rtl\data_radix.txt', 'w');
% 循環(huán)遍歷 cell 數(shù)組并將每個(gè)元素寫(xiě)入文件
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,';'); %最后一行分號(hào)結(jié)尾
% 關(guān)閉文件
fclose(fid);
disp('其他進(jìn)制數(shù)據(jù)已寫(xiě)入到txt文件。');

分:將MATLAB中十進(jìn)制數(shù)據(jù)寫(xiě)入txt文件

%% 將生成的十進(jìn)制數(shù)據(jù)寫(xiě)入txt文件中
Signal = decdata;%修改decdata為需要寫(xiě)入txt的數(shù)據(jù)
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('十進(jìn)制數(shù)據(jù)已寫(xiě)入到txt文件。');

讀txt數(shù)據(jù)進(jìn)制轉(zhuǎn)換后寫(xiě)入新的txt

將上面小節(jié)的讀txt數(shù)據(jù)的其他進(jìn)制數(shù)據(jù)轉(zhuǎn)為十進(jìn)制到MATLAB和分:將MATLAB中十進(jìn)制數(shù)據(jù)以'radix進(jìn)制'數(shù)據(jù)格式寫(xiě)入txt文件組合即可實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換。修改對(duì)應(yīng)參數(shù)設(shè)置與地址。

到此這篇關(guān)于Matlab實(shí)現(xiàn)讀寫(xiě)txt文件數(shù)據(jù)與進(jìn)制轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)Matlab讀寫(xiě)txt與進(jìn)制轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

赤水市| 德清县| 自贡市| 五峰| 余庆县| 西充县| 扬中市| 兖州市| 黄冈市| 蕉岭县| 万山特区| 繁昌县| 花垣县| 明星| 饶阳县| 浠水县| 红桥区| 多伦县| 将乐县| 赤城县| 大庆市| 虎林市| 云林县| 会理县| 汝阳县| 元氏县| 平乐县| 江西省| 吴川市| 京山县| 合川市| 仙居县| 中方县| 三门县| 交口县| 汕头市| 定安县| 桂平市| 新郑市| 佛教| 乐平市|