日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MATLAB保存数据为txt或dat格式

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MATLAB保存数据为txt或dat格式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:https://blog.csdn.net/sruixue/article/details/41542781

總結網上各大論壇,主要有三種方法。

第一種方法:save(最簡單基本的)

具體的命令是:用save *.txt -ascii x
x為變量
*.txt為文件名,該文件存儲于當前工作目錄下,再打開就可以打開后,數據有可能是以指數形式保存的.

例子:

a =[17 24 1 8 15;23 5 7 14 16 ;4 6 13 20 22 ;10 12 19 213 ;11 18 25 2 9 ];
save afile.txt -ascii a
afile.txt打開之后,是這樣的:
1.7000000e+001 2.4000000e+001 1.0000000e+000 8.0000000e+000 1.5000000e+001
2.3000000e+001 5.0000000e+000 7.0000000e+000 1.4000000e+001 1.6000000e+001
4.0000000e+000 6.0000000e+000 1.3000000e+001 2.0000000e+001 2.2000000e+001
1.0000000e+001 1.2000000e+001 1.9000000e+001 2.1000000e+001 3.0000000e+000
1.1000000e+001 1.8000000e+001 2.5000000e+001 2.0000000e+000 9.0000000e+000

第二種方法:dlmwrite

dlmwrite('a.txt',a,'precision','%10.0f')

或者是dlmwrite('a.txt',a,'delimiter', '\t')

對于只有一行或者一列的數據,很適用,但是多行的,就亂了

網上有很多這一類似的問題,但是都不是很理想

第三種方法:fopen+fprintf

下面主要介紹這種方法,可以解決以上問題:用fprintf命令:以上面的例子為例:

第一種情況:

a=[17 24 1 8 15;23 5 7 14 16 ;4 6 13 20 22 ;1012 19 21 3 ;11 18 25 2 9 ];
fid = fopen('b.txt','wt');
fprintf(fid,'%g\n',a); # \n 換行
fclose(fid);

然后用寫字板打開b.txt,內容如下:為列向量

17
23
4
10
11
24
5
6
12
18
1
7
13
19
25
8
14
20
21
2
15
16
22
3
9

第二種情況:

對上面的命令做一下改動:# \n 換行改為\t,table鍵

fid = fopen('b.txt','w');
fprintf(fid,'%g\t',a);
fclose(fid);

然后用寫字板打開b.txt,內容如下:為行向量:

17 23 4 10 11 24 5 6 12 18 1 7 13 19 25 8 14 20 21 2 15 16 22 3 9

第三種情況:

綜合上面的兩個結果,我們編寫以下命令:

<A style="key: ih.baidu.comfid=fopen('b.txt','wt');%寫入文件路徑
[m,n]=size(a);
for i=1:1:m
for j=1:1:n
if j==n
fprintf(fid,'%g\n',a(i,j));
else
fprintf(fid,'%g\t',a(i,j));
end
end
end
fclose(fid);

然后用寫字板打開b.txt,內容如下:矩陣

17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9

說明:以上操作都是在當前的工作目錄下完成!下面給出最一般的模型,大家可以試著自己操作,如果需要dat格式,直接把txt換為dat就可以

fid=fopen('C:\Documents andSettings\cleantotal.ped','wt');%寫入文件路徑
matrix=input_mattrix %input_matrix為待輸出矩陣
[m,n]=size(matrix);
for i=1:1:m
for j=1:1:n
if j==n
fprintf(fid,'%g\n',matrix(i,j));
else
fprintf(fid,'%g\t',matrix(i,j));
end
end
end
fclose(fid);

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××

下面附了具體的matlab的fopen和fprintf函數具體解釋,當然help一下是可以知道的,只是為了方便大家

matlab中fopen函數在指定文件打開的實例如下:

*1)“fopen”打開文件,賦予文件代號。
語法1: FID= FOPEN(filename,permission)
用指定的方式打開文件
FID=+N(N是正整數):表示文件打開成功,文件代號是N.
FID=-1 : 表示文件打開不成功。
FID在此次文件關閉前總是有效的。
如以讀方式打開,matlab首先搜索工作目錄,其次搜索matlab的其他目錄,“permission”是打開方式參數。
打開方式參數由以下字符串確定:
r 讀出
w 寫入(文件若不存在,自動創建)
a 后續寫入(文件若不存在,自動創建)
r+ 讀出和寫入(文件應已存在)
w+ 重新刷新寫入,(文件若不存在,自動創建)
a+ 后續寫入(文件若不存在,自動創建))
w 重新寫入,但不自動刷新
a 后續寫入,但不自動刷新
文件的存儲格式:文件打開的默認方式是:二進制。以文本方式打開,可以在方式參
數“permission”中加入“t”文件將,如“rt”,“wt+”

matlab中fprintf函數的具體使用方法實例如下:

fprintf函數可以將數據按指定格式寫入到文本文件中。其調用格式為:

數據的格式化輸出:fprintf(fid, format, variables)

按指定的格式將變量的值輸出到屏幕或指定文件

fid為文件句柄,若缺省,則輸出到屏幕

1 for standard output (the screen) or2 for standard error. If FID is omitted, output goes to the screen.

format用來指定數據輸出時采用的格式

%d 整數
%e 實數:科學計算法形式
%f 實數:小數形式
%g 由系統自動選取上述兩種格式之一
%s 輸出字符串

fprintf(fid,format,A)
說明:fid為文件句柄,指定要寫入數據的文件,format是用來控制所寫數據格式的格式符,與fscanf函數相同,A是用來存放數據的矩陣。
例6.9 創建一個字符矩陣并存入磁盤,再讀出賦值給另一個矩陣。
a='string';
fid=fopen('d:\char1.txt','w');
fprintf(fid,'%s',a);
fclose(fid);
fid1=fopen('d:\char1.txt','rt');
fid1=fopen('d:\char1.txt','rt');
b=fscanf(fid1,'%s')
得到

b =
string

matlab讀txt文件

fid=fopen('fx.txt','r');
%得到文件號
[f,count]=fscanf(fid,'%f %f',[12,90]);
%把文件號1的數據讀到f中。其中f是[12 90]的矩陣
%這里’%f %f’表示讀取數據的形勢,他是按原始數據型讀出
fclose(fid);
%關閉文件
另外有的txt文件還可以用load來打開
其語句為
f=load('fx.txt)

字符串操作函數

  • 函數eval可以用來執行用字符串表示的表達式
  • 函數deblank可以去掉字符串末尾的所有空格
  • 函數findstr可以用來在長字符串中查找一個短的字符串,并返回相應的位置
  • 函數isstr可以用來判斷變量是否為字符串
  • 函數isletter可以用來判斷字符串中各個元素是否為字母
  • 函數isspace可以用來判斷字符串元素是否為空格符
  • 函數lower和upper可以把字符串中的字母轉為小寫格式和大寫格式
  • 函數strcat可以把多個字符串在水平方向上依次連接起來
  • 函數strvcat可以把多個字符串按豎直方向連接起來
  • 函數strcmp可以用來進行字符串的比較,返回1或0
  • 函數strcmpi可以用來忽略英文字母的大小寫方式比較字符串
  • 函數strncmp可以用來比較字符串前N個字符是否相同
  • 函數strjust可以用來調整字符串矩陣的對齊方式
  • 函數strmatch可以用來尋找和目標字符串匹配的行
  • 函數strrep可以實現字符串的查找和替代功能
  • 函數strtok可以找出字符串第一個空格符前的字符串
  • 函數texlabel可以把字符串轉換成tex軟件的格式
  • 不同進制間的轉換,bin2hex,bin2dec(‘字符串’);dec2hex(數)=字符串;即十進制數不為字符串, 其它進制為字符串
  • 函數bitget可以用來獲取二進制的數位 C=bitget(A,bit),A為一個無符號整形數據
  • 函數bitset可以用來設定某個二進制數位的值 C=bitset(A,bit) 指定數位的數值取反
    C=bitset(A,bit,V)指定數位的數值被V替換

  • 函數bitand,bitor和bitxor可以用來進行‘與’,‘或’,‘抑或’數位操作

  • 總結

    以上是生活随笔為你收集整理的MATLAB保存数据为txt或dat格式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。