Matlab檔案IO--文字與數值的讀
最近專案模擬需要用到Matlab的GUI設計,與所有其他設計語言GUI設計一樣,最基礎也是最重要的就是有關資料的讀寫以及資料型別的轉換。所以今天就對Matlab檔案IO進行下學習,這篇重點是文字與數值讀的應用。
1. 讀取純數值的文字檔案
%% 讀取純數值的文字檔案
format long g
dat1 = load('data1.txt');
dat2 = importdata('data1.txt')
[a,b,c,d] = textread('data1.txt','%2d %8.3f %8.3f %7.3f') %使用textread函式
%讀取該檔案到4個列向量中
fid = fopen('data1.txt'); %以只讀模式開啟該文字檔案,為fscanf和textscan函式
%的讀取操作做準備
dat3 = fscanf(fid,'%g',[4,inf]); %讀取4*inf個elements
frewind(fid); %將文字指標移到檔案開頭
dat4 = textscan(fid,'%2d %8.3f %8.3f %7.3f'); %採用textscan函式讀取文字檔案的數值
%到單元陣列中
dat4{:} %檢視該單元陣列
fclose(fid);
fid = fopen('data1.txt','rt'); %以文字模式開啟該檔案
dat5 = fread(fid); %讀取該文字的所有字元,返回其ASCII值
%reads
%data from a binary file into column列 vector A and
%positions the file pointer at the end-of-file marker
str5 = char(dat5') %將ASCII值轉化為字串
dat6 = str2num(str5) %由字串獲取數值陣列
fclose(fid);
2. 讀取包含文字和數值的文字檔案
%% 讀取包含文字和數值的文字檔案
dat1 = importdata('data2.txt',' ',1); %loads
%data from ASCII file, filename, or the clipboard,
%reading numeric data starting from line headerlinesIn+1
%這裡指明文字是以空格來作為分隔的,如果是文字以逗號分隔
%這裡就需要改為','
dat1.data %dai1為一個結構體,返回其數值段
dat1.textdata %返回dat1的文字資料段,即第一行和第一列。非數值項都儲存在該段內
[a, b, c, d] = textread('data2.txt','%s %f %f %f','headerlines',1) %採用textread函式
%函式讀取該檔案,跳過第一行
fid = fopen('data2.txt'); %以制度模式開啟
dat2 = textscan(fid,'%s %f %f %f','HeaderLines',1)
dat2{:} %以列的形式展示
fclose(fid);
3. 讀取包含文字和資料混合的文字檔案
%% 讀取包含文字和資料混合的文字檔案
dat1 = textread('data3.txt','%s','delimiter','\n') %將\n換行視為分隔符
%When textread reads a consecutive series
%of whitespace values, it treats them as one white
%space. When it reads a consecutive series of delimiter values,
%it treats each as a separate delimiter.
n1 = str2num(dat1{3}) %提取第三行的數值,即為串列埠1的幀數,將字串單元轉換為數值型
dat1_1 = dat1(6:9) %提取串列埠1的資料到字串單元陣列dat1_1中
dat1_2 = cell2mat(deblank(dat1_1)) %將字串單元陣列轉換為字元陣列,
%removes all trailing whitespace and
%null characters from the end of character string str
dat1_3 = str2num(dat1_2) %將字元陣列轉換為數值陣列
para1 = dat1_3(:,2) %提取串列埠1的引數2的值,即陣列陣列dat1_3的第二列
m = find(strcmp(dat1,'串列埠2幀數:')) %找到內容為“串列埠2幀數:”的行
n2 = str2num(dat1{m+1}) %提取串列埠2的幀數
dat2_1 = dat1(m+4:m+4+n2) %提取串列埠2的資料到字串單元陣列dat2_1中
dat2_2 = cell2mat(deblank(dat2_1)) %將字串單元陣列轉換為字元陣列
dat2_3 = str2num(dat2_2) %將字元陣列轉換為數值陣列
%%%%%%%%%%%%%%%%%%%%%%以下程式段採用textscan函式讀取文字檔案並提取資料%%%%%%%%%%%%%%%%%%%%%%%%
fid = fopen('data3.txt'); %以只讀模式開啟
n1 = textscan(fid,'%d','HeaderLines',2) %採用textscan讀取兩行之後的資料,即為串列埠1的幀數
dat1 = textscan(fid,'%[^串列埠]','HeaderLines',2) %從當前位置跳兩行開始讀取字串
%直到遇到“串列埠”等字元
dat1_1 = str2num(dat1{:}{:}) %將上面讀到的字串轉化為數值陣列。注意,dat1_1為包含回車符的字串
fclose(fid);
dat1 =
'串列埠資料以混合格式儲存示例'
'串列埠1幀數:'
'4'
'串列埠1資料:'
'時間 引數1 引數2 引數3'
'00:00:00:000 0.000325 0.000378 0.000598'
'00:00:00:040 0.000256 0.000245 0.000698'
'00:00:00:080 0.000369 0.000251 0.000651'
'00:00:00:120 0.000372 0.000249 0.000648'
''
'串列埠2幀數:'
'3'
'串列埠2資料:'
'時間 引數1 引數2 '
'00:00:00:000 0.000325 0.000378'
'00:00:00:040 0.000256 0.000245'
'00:00:00:080 0.000369 0.000251'
'00:00:00:120 0.000372 0.000249 '
n1 =
4
dat1_1 =
'00:00:00:000 0.000325 0.000378 0.000598'
'00:00:00:040 0.000256 0.000245 0.000698'
'00:00:00:080 0.000369 0.000251 0.000651'
'00:00:00:120 0.000372 0.000249 0.000648'
dat1_2 =
00:00:00:000 0.000325 0.000378 0.000598
00:00:00:040 0.000256 0.000245 0.000698
00:00:00:080 0.000369 0.000251 0.000651
00:00:00:120 0.000372 0.000249 0.000648
dat1_3 =
1.0e-03 *
0.3250 0.3780 0.5980
0.2560 0.2450 0.6980
0.3690 0.2510 0.6510
0.3720 0.2490 0.6480
para1 =
1.0e-03 *
0.3780
0.2450
0.2510
0.2490
m =
11
n2 =
3
dat2_1 =
'00:00:00:000 0.000325 0.000378'
'00:00:00:040 0.000256 0.000245'
'00:00:00:080 0.000369 0.000251'
'00:00:00:120 0.000372 0.000249 '
dat2_2 =
00:00:00:000 0.000325 0.000378
00:00:00:040 0.000256 0.000245
00:00:00:080 0.000369 0.000251
00:00:00:120 0.000372 0.000249
dat2_3 =
1.0e-03 *
0.3250 0.3780
0.2560 0.2450
0.3690 0.2510
0.3720 0.2490
n1 =
[4]
dat1 =
{1x1 cell}
dat1_1 =
1.0e-03 *
0.3250 0.3780 0.5980
0.2560 0.2450 0.6980
0.3690 0.2510 0.6510
0.3720 0.2490 0.6480
相關文章
- Matlab檔案IO--文字與數值的寫Matlab
- 【MATLAB】讀取和寫入文字檔案Matlab
- matlab 資料檔案MAT的讀與寫Matlab
- VBA建立文字檔案、讀寫文字檔案
- matlab讀取npy檔案Matlab
- 如何從文字檔案讀入 SQL 引數SQL
- 檔案排版(文字檔案讀寫)
- C#讀取文字檔案和寫文字檔案C#
- MATLAB快速讀取STL檔案Matlab
- 【Java】讀寫文字檔案Java
- VB讀取文字檔案的例子:逐行讀取
- python 讀取文字檔案Python
- Spingboot 讀取 yml 配置檔案裡的引數值boot
- matlab輸出複數到檔案Matlab
- 使用PowerShell比較本地文字檔案與Web上的文字檔案是否相同Web
- 文字檔案與二進位制檔案的區別
- 簡單讀取XML檔案中的值XML
- java 統計大文字檔案的行數Java
- c/c++、matlab讀取資料夾下的檔案C++Matlab
- asp.net 按行讀取包含中文的文字(txt)檔案並取得行數ASP.NET
- 微分方程數值解法的matlab程式Matlab
- 用 ABAP 讀取本地文字檔案內容試讀版
- 從Matlab到FPGA(Matlab生成coe檔案或mem檔案)MatlabFPGA
- RM-2 使用matlab進行txt檔案讀寫Matlab
- 直播系統原始碼,讀取多行文字、讀取檔案分割多行文字原始碼
- [MatLab]學習筆記2:MatLab數值資料Matlab筆記
- Qt學習之路(57): 文字檔案讀寫薦QT
- Java讀取文字檔案中文亂碼問題Java
- MATLAB生成coe檔案Matlab
- matlab寫coe檔案Matlab
- Matlab生成exe檔案Matlab
- 建立與讀取.ini檔案
- 第13周-閱讀專案3-對文字檔案的訪問
- Maatwebsite\Excel 讀取帶公式的excel檔案得到值呢?WebExcel公式
- #解決opencv與matlab對於BMP格式讀出的畫素值不同的問題OpenCVMatlab
- 如何實時讀取一個不斷更新的文字檔案
- 立此存照(11)[C++]cfloat標頭檔案即浮點數的最大值與最小值C++
- JavaScript讀取文字檔案內容程式碼例項JavaScript