当前位置:网站首页>MATLAB提取不規則txt文件中的數值數據(簡單且實用)
MATLAB提取不規則txt文件中的數值數據(簡單且實用)
2022-07-03 11:16:00 【感謝地心引力】
一、前情概要
我的txt文本數據如圖所示(部分),是某地的地形數據以及景點的比特置數據:
txt裏面包括數值、文字、中英文括號、中英文逗號、空格等等,總之類型很複雜,用通常的load、importdata、txtscan等函數都不太好處理。
這裏介紹一種快捷又十分實用的方法。
二、MATLAB導入數據
以前都直接實用代碼讀取文件的,很少使用到這個功能,但這個功能卻非常好用。(當然了,批量的、格式化的文件還是建議使用代碼讀取)。
2.1 數據加載
直接點擊就完事:
2.2 設置分割符
txt中的內容雖然比較混亂,但數據與數據之間還是有分隔撒,比如空格、逗號之類的。我的數據裏面分隔符號比較多且亂,具體設置如下:
在這裏可以設置數據的分隔符,自定義分隔符支持任意鍵盤輸入(漢字、標點、換行等等),根據實際情况設置即可。
根據設置的分隔符,txt文檔被劃分如下:
2.3 設置輸出格式
該功能可以輸出table、矩陣、cell、字符串數組等格式,在此我選擇數值矩陣。
對於txt中無法導入的cell,可以設置替換值,如Nan(可以自定義),也可以將那一行或列删除。
設置好輸出條件後,確保選中了要輸出的數據(框選部分或者ctrl A 全選),如2.2節中所示,藍色為輸出的數值,而黃色則替換成了NaN。
2.4 生成脚本或函數
在導出時,可以生成脚本或者函數,僅適用於當前文件。後續對該文件的操作,使用代碼就可以實現了。
我的txt文件對應的函數如下:
function Adata = importfile(filename, dataLines)
%IMPORTFILE1 從文本文件中導入數據
% ADATA = IMPORTFILE1(FILENAME)讀取文本文件 FILENAME 中默認選定範圍的數據。 返回數值數據。
%
% ADATA = IMPORTFILE1(FILE, DATALINES)按指定行間隔讀取文本文件 FILENAME
% 中的數據。對於不連續的行間隔,請將 DATALINES 指定為正整數標量或 N×2 正整數標量數組。
%
% 示例:
% Adata = importfile1("G:\資料\Now\Part_time_job\建模800\A_data.txt", [1, Inf]);
%
% 另請參閱 READTABLE。
%
% 由 MATLAB 於 2022-06-30 18:16:29 自動生成
%% 輸入處理
% 如果不指定 dataLines,請定義默認範圍
if nargin < 2
dataLines = [1, Inf];
end
%% 設置導入選項並導入數據
opts = delimitedTextImportOptions("NumVariables", 445);
% 指定範圍和分隔符
opts.DataLines = dataLines;
opts.Delimiter = [" ", "(", ")", ",", ",-", "(", ")", ","];
% 指定列名稱和類型
opts.VariableNames = ["h0", "VarName2", "VarName3", "VarName4", "VarName5", "VarName6", "VarName7", "VarName8", "VarName9", "VarName10", "VarName11", "VarName12", "VarName13", "VarName14", "VarName15", "VarName16", "VarName17", "VarName18", "VarName19", "VarName20", "VarName21", "VarName22", "VarName23", "VarName24", "VarName25", "VarName26", "VarName27", "VarName28", "VarName29", "VarName30", "VarName31", "VarName32", "VarName33", "VarName34", "VarName35", "VarName36", "VarName37", "VarName38", "VarName39", "VarName40", "VarName41", "VarName42", "VarName43", "VarName44", "VarName45", "VarName46", "VarName47", "VarName48", "VarName49", "VarName50", "VarName51", "VarName52", "VarName53", "VarName54", "VarName55", "VarName56", "VarName57", "VarName58", "VarName59", "VarName60", "VarName61", "VarName62", "VarName63", "VarName64", "VarName65", "VarName66", "VarName67", "VarName68", "VarName69", "VarName70", "VarName71", "VarName72", "VarName73", "VarName74", "VarName75", "VarName76", "VarName77", "VarName78", "VarName79", "VarName80", "VarName81", "VarName82", "VarName83", "VarName84", "VarName85", "VarName86", "VarName87", "VarName88", "VarName89", "VarName90", "VarName91", "VarName92", "VarName93", "VarName94", "VarName95", "VarName96", "VarName97", "VarName98", "VarName99", "VarName100", "VarName101", "VarName102", "VarName103", "VarName104", "VarName105", "VarName106", "VarName107", "VarName108", "VarName109", "VarName110", "VarName111", "VarName112", "VarName113", "VarName114", "VarName115", "VarName116", "VarName117", "VarName118", "VarName119", "VarName120", "VarName121", "VarName122", "VarName123", "VarName124", "VarName125", "VarName126", "VarName127", "VarName128", "VarName129", "VarName130", "VarName131", "VarName132", "VarName133", "VarName134", "VarName135", "VarName136", "VarName137", "VarName138", "VarName139", "VarName140", "VarName141", "VarName142", "VarName143", "VarName144", "VarName145", "VarName146", "VarName147", "VarName148", "VarName149", "VarName150", "VarName151", "VarName152", "VarName153", "VarName154", "VarName155", "VarName156", "VarName157", "VarName158", "VarName159", "VarName160", "VarName161", "VarName162", "VarName163", "VarName164", "VarName165", "VarName166", "VarName167", "VarName168", "VarName169", "VarName170", "VarName171", "VarName172", "VarName173", "VarName174", "VarName175", "VarName176", "VarName177", "VarName178", "VarName179", "VarName180", "VarName181", "VarName182", "VarName183", "VarName184", "VarName185", "VarName186", "VarName187", "VarName188", "VarName189", "VarName190", "VarName191", "VarName192", "VarName193", "VarName194", "VarName195", "VarName196", "VarName197", "VarName198", "VarName199", "VarName200", "VarName201", "VarName202", "VarName203", "VarName204", "VarName205", "VarName206", "VarName207", "VarName208", "VarName209", "VarName210", "VarName211", "VarName212", "VarName213", "VarName214", "VarName215", "VarName216", "VarName217", "VarName218", "VarName219", "VarName220", "VarName221", "VarName222", "VarName223", "VarName224", "VarName225", "VarName226", "VarName227", "VarName228", "VarName229", "VarName230", "VarName231", "VarName232", "VarName233", "VarName234", "VarName235", "VarName236", "VarName237", "VarName238", "VarName239", "VarName240", "VarName241", "VarName242", "VarName243", "VarName244", "VarName245", "VarName246", "VarName247", "VarName248", "VarName249", "VarName250", "VarName251", "VarName252", "VarName253", "VarName254", "VarName255", "VarName256", "VarName257", "VarName258", "VarName259", "VarName260", "VarName261", "VarName262", "VarName263", "VarName264", "VarName265", "VarName266", "VarName267", "VarName268", "VarName269", "VarName270", "VarName271", "VarName272", "VarName273", "VarName274", "VarName275", "VarName276", "VarName277", "VarName278", "VarName279", "VarName280", "VarName281", "VarName282", "VarName283", "VarName284", "VarName285", "VarName286", "VarName287", "VarName288", "VarName289", "VarName290", "VarName291", "VarName292", "VarName293", "VarName294", "VarName295", "VarName296", "VarName297", "VarName298", "VarName299", "VarName300", "VarName301", "VarName302", "VarName303", "VarName304", "VarName305", "VarName306", "VarName307", "VarName308", "VarName309", "VarName310", "VarName311", "VarName312", "VarName313", "VarName314", "VarName315", "VarName316", "VarName317", "VarName318", "VarName319", "VarName320", "VarName321", "VarName322", "VarName323", "VarName324", "VarName325", "VarName326", "VarName327", "VarName328", "VarName329", "VarName330", "VarName331", "VarName332", "VarName333", "VarName334", "VarName335", "VarName336", "VarName337", "VarName338", "VarName339", "VarName340", "VarName341", "VarName342", "VarName343", "VarName344", "VarName345", "VarName346", "VarName347", "VarName348", "VarName349", "VarName350", "VarName351", "VarName352", "VarName353", "VarName354", "VarName355", "VarName356", "VarName357", "VarName358", "VarName359", "VarName360", "VarName361", "VarName362", "VarName363", "VarName364", "VarName365", "VarName366", "VarName367", "VarName368", "VarName369", "VarName370", "VarName371", "VarName372", "VarName373", "VarName374", "VarName375", "VarName376", "VarName377", "VarName378", "VarName379", "VarName380", "VarName381", "VarName382", "VarName383", "VarName384", "VarName385", "VarName386", "VarName387", "VarName388", "VarName389", "VarName390", "VarName391", "VarName392", "VarName393", "VarName394", "VarName395", "VarName396", "VarName397", "VarName398", "VarName399", "VarName400", "VarName401", "VarName402", "VarName403", "VarName404", "VarName405", "VarName406", "VarName407", "VarName408", "VarName409", "VarName410", "VarName411", "VarName412", "VarName413", "VarName414", "VarName415", "VarName416", "VarName417", "VarName418", "VarName419", "VarName420", "VarName421", "VarName422", "VarName423", "VarName424", "VarName425", "VarName426", "VarName427", "VarName428", "VarName429", "VarName430", "VarName431", "VarName432", "VarName433", "VarName434", "VarName435", "VarName436", "VarName437", "VarName438", "VarName439", "VarName440", "VarName441", "VarName442", "VarName443", "VarName444", "VarName445"];
opts.VariableTypes = ["double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double"];
% 指定文件級屬性
opts.ExtraColumnsRule = "ignore";
opts.EmptyLineRule = "read";
% 指定變量屬性
opts = setvaropts(opts, ["h0", "VarName10", "VarName13", "VarName16", "VarName19", "VarName22", "VarName25", "VarName28", "VarName31", "VarName34", "VarName37", "VarName40", "VarName43", "VarName46", "VarName49", "VarName52", "VarName55", "VarName58", "VarName61", "VarName64", "VarName67", "VarName70", "VarName73", "VarName76", "VarName79", "VarName82", "VarName85", "VarName88", "VarName91", "VarName94", "VarName97", "VarName100", "VarName103", "VarName106", "VarName109", "VarName112", "VarName115", "VarName118", "VarName121", "VarName124", "VarName127", "VarName130", "VarName133", "VarName136", "VarName139", "VarName142", "VarName145", "VarName148", "VarName151", "VarName154", "VarName157", "VarName160", "VarName163", "VarName166", "VarName169", "VarName172", "VarName175", "VarName178", "VarName181", "VarName184", "VarName187", "VarName190", "VarName193", "VarName196", "VarName199", "VarName202", "VarName205", "VarName208", "VarName211", "VarName214", "VarName217", "VarName220", "VarName223", "VarName226", "VarName229", "VarName232", "VarName235", "VarName238", "VarName241", "VarName244", "VarName247", "VarName250", "VarName253", "VarName256", "VarName259", "VarName262", "VarName265", "VarName268", "VarName271", "VarName274", "VarName277", "VarName280", "VarName283", "VarName286", "VarName289", "VarName292", "VarName295", "VarName298", "VarName301", "VarName304", "VarName307", "VarName310", "VarName313", "VarName316", "VarName319", "VarName322", "VarName325", "VarName328", "VarName331", "VarName334", "VarName337", "VarName340", "VarName343", "VarName346", "VarName349", "VarName352", "VarName355", "VarName358", "VarName361", "VarName364", "VarName367", "VarName370", "VarName373", "VarName376", "VarName379", "VarName382", "VarName385", "VarName388", "VarName391", "VarName394", "VarName397", "VarName400", "VarName403", "VarName406", "VarName409", "VarName412", "VarName415", "VarName418", "VarName421", "VarName424", "VarName427", "VarName430", "VarName433", "VarName436", "VarName439", "VarName442", "VarName445"], "TrimNonNumeric", true);
opts = setvaropts(opts, ["h0", "VarName10", "VarName13", "VarName16", "VarName19", "VarName22", "VarName25", "VarName28", "VarName31", "VarName34", "VarName37", "VarName40", "VarName43", "VarName46", "VarName49", "VarName52", "VarName55", "VarName58", "VarName61", "VarName64", "VarName67", "VarName70", "VarName73", "VarName76", "VarName79", "VarName82", "VarName85", "VarName88", "VarName91", "VarName94", "VarName97", "VarName100", "VarName103", "VarName106", "VarName109", "VarName112", "VarName115", "VarName118", "VarName121", "VarName124", "VarName127", "VarName130", "VarName133", "VarName136", "VarName139", "VarName142", "VarName145", "VarName148", "VarName151", "VarName154", "VarName157", "VarName160", "VarName163", "VarName166", "VarName169", "VarName172", "VarName175", "VarName178", "VarName181", "VarName184", "VarName187", "VarName190", "VarName193", "VarName196", "VarName199", "VarName202", "VarName205", "VarName208", "VarName211", "VarName214", "VarName217", "VarName220", "VarName223", "VarName226", "VarName229", "VarName232", "VarName235", "VarName238", "VarName241", "VarName244", "VarName247", "VarName250", "VarName253", "VarName256", "VarName259", "VarName262", "VarName265", "VarName268", "VarName271", "VarName274", "VarName277", "VarName280", "VarName283", "VarName286", "VarName289", "VarName292", "VarName295", "VarName298", "VarName301", "VarName304", "VarName307", "VarName310", "VarName313", "VarName316", "VarName319", "VarName322", "VarName325", "VarName328", "VarName331", "VarName334", "VarName337", "VarName340", "VarName343", "VarName346", "VarName349", "VarName352", "VarName355", "VarName358", "VarName361", "VarName364", "VarName367", "VarName370", "VarName373", "VarName376", "VarName379", "VarName382", "VarName385", "VarName388", "VarName391", "VarName394", "VarName397", "VarName400", "VarName403", "VarName406", "VarName409", "VarName412", "VarName415", "VarName418", "VarName421", "VarName424", "VarName427", "VarName430", "VarName433", "VarName436", "VarName439", "VarName442", "VarName445"], "ThousandsSeparator", ",");
% 導入數據
Adata = readtable(filename, opts);
%% 轉換為輸出類型
Adata = table2array(Adata);
end
2.5 數據的進一步處理
上述方法雖然很好的將txt中的數據讀取出來了,數據中還包含一直空值之類的。可以進一步提取:
將不同高度,對應的經緯度、景點數據采用如下代碼進行提取:
close all;
clear;
clc;
Adata=importfile('A_data.txt'); %使用系統生成的函數讀取txt文件
[row,coloum]=size(Adata); %獲取輸出的矩陣尺寸
high=Adata(1:3:57,2); %提取高度
longitude=Adata(2:3:56,2:3:coloum); %提取經度
latitude=Adata(2:3:56,3:3:coloum); %提取緯度
A_position=Adata(58,2:4); %A地比特置
B_position=Adata(58,7:9); %B地比特置
A_spots=Adata(59:67,2:5); %A地景點信息
B_spots=Adata(59:67,8:11); %B地景點信息
得到與txt文本中一致的格式化數據:
至此,數據已經成功提取,接下來則是根據數據做圖(某地地形圖)。
边栏推荐
猜你喜欢

Stack, monotone stack, queue, monotone queue

【Proteus仿真】74HC154 四线转12线译码器组成的16路流水灯

I have been doing software testing for three years, and my salary is less than 20K. Today, I put forward my resignation

Game test related tests a hero's skills (spring moves are asked more questions)

8年测试工程师总结出来的《测试核心价值》与《0基础转行软件测试超全学习指南》

Probability theory: application of convolution in calculating moving average

英特尔13代酷睿旗舰曝光,单核5.5GHz

面試題總結(2) IO模型,集合,NIO 原理,緩存穿透,擊穿雪崩

公司测试部门来了个00后卷王之王,老油条感叹真干不过,但是...

redis那些事儿
随机推荐
Game test related tests a hero's skills (spring moves are asked more questions)
php如何解决高并发问题
What experience is there only one test in the company? Listen to what they say
【Proteus仿真】74HC154 四线转12线译码器组成的16路流水灯
Is pinduogai's sales safe in 2022?
有赞CTO崔玉松:有赞Jarvis核心目标是使产品变得更加聪明和可靠
glassfish org. h2.server. Shutdownhandler classnotfoundexception exception exception handling
Tencent micro app to get wechat user information
AMS series - application startup process
历经一个月,终于拿到金蝶Offer!分享一下四面面经+复习资料
File upload and download test point
Comment réaliser des tests automatisés pour les tests logiciels embarqués?
Qt:qss custom qspinbox instance
如何清理v$rman_backup_job_details视图 报错ORA-02030
Bi skills - permission axis
I have been doing software testing for three years, and my salary is less than 20K. Today, I put forward my resignation
T5 attempt
Empire CMS no thumbnail smart tag (e:loop) two ways to judge whether there is a titlepic
基于I2C协议的驱动开发
【obs】封装obs实现采集的基础流程