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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

fscanf不读取_思考了一天,终于把matlab的fscanf中的sizeA搞清楚了

發布時間:2024/9/27 循环神经网络 83 豆豆
生活随笔 收集整理的這篇文章主要介紹了 fscanf不读取_思考了一天,终于把matlab的fscanf中的sizeA搞清楚了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數值如12345等可以作為字符,所以以字符格式讀取文件時,這些數字照樣可以被讀取
A = fscanf(fileID,formatSpec)
A = fscanf(fileID,formatSpec,sizeA)
以上是fscanf的語法;
sizeA起到的作用是限制,限制讀取讀取文件中數據的數量;
舉例來說:
John 1995 12 5 12.3 3.24
Tom 1995 12 7 2.3 2.0
Jean 1996 3 2 10.2 0
假如說文件中有這么一組數;
說明:每個空白間隔為一個數據
第一個數據為‘John’是一個字符串,讀取的格式為fprintf(fid,'%s or %c',sizeA)
注意%s是讀取字符串,不包括空白(即讀取完后,數據之間無空白間隔);John199512512.3
而%c是逐個字符讀取,包括空白(即讀取完后,數據之間有空白間隔);John 1995 12 5
說完讀取的部分,再來說說sizeA是如何控制fscanf函數的。sizeA=N的情形
(1)對于字符讀取,采用%s
%s是一個字符串一個字符串進行讀取的,fprintf(fid,'%s',sizeA)
sizeA可以使單個整數N,也可以是[m n]
我們先運行N,取值為1 3 5
clear;
fid = fopen('fscanfsample.txt','r'); i = 1;
name = fscanf(fid,'%s',1)
name =
'John'
clear;
fid = fopen('fscanfsample.txt','r'); i = 1;
name = fscanf(fid,'%s',2)
name =
'John1995'
clear;
fid = fopen('fscanfsample.txt','r'); i = 1;
name = fscanf(fid,'%s',5)
name =
'John199512512.3'
可以看到,%s每次讀取一個字符串,前面提到,數字都可以當成字符串,但字符串不能當為數字
所以sizeA=1是讀取一個字符串,sizeA=2時,讀取兩個字符串,5時讀取5個字符串,并且沒有空白間隔
所以sizeA其實就是控制fscanf讀取數據的數目,
fscanf讀取數據的時候是橫向讀取,而SizeA是控制讀取的數目
(2)那么對于%c同樣如此,只不過%c是一個一個字符去讀,因此sizeA要擴大,比如讀取第一個字符串John
對于%s,sizeA=1即可,但對于%c,則sizeA需要等于4才可讀出。
(3)對于數值的讀取同樣代表讀取的數據個數,但需要注意的是,%d指的是整數,%f指的是浮點數;我們看該文件第一行1995 12 5都是整數,如果寫fscanf(fid,'%d',3)那么肯定能把這三個整數讀到,并且按照列進行排列,如果寫fscanf(fid,'%d',4),由于12.3由整數和小數兩部分構成,因此小數點以前的12可以被讀出來,但是小數點和小數點后的3無法讀出來,因為不是整數。如果寫fscanf(fid,'%d',5),照樣只讀到12.3的12就停止,因為不滿足要求之后,fscanf會停止運行。返回之前讀取的數據。
(4)fscanf 函數在整個文件中重新應用該格式,并將文件指針定位在文件結尾標記處。如果 fscanf 無法將 formatSpec 與數據相匹配,將只讀取匹配的部分并停止處理
以上講的都是sizeA=N的情形,接下來將sizeA=[m n]的情形
(1)對于字符串
字符串數據類型為char,char沒有矩陣一說,字符串string的引用一般直接寫str(i)即可,如str=’I love China‘, str(1)==I,str(5)==v,不能寫為str(3,3),會報錯:
str(3,3)
索引超出數組邊界(不能超出 1)。
但是可以寫str(1,3),相當于str(3);等于‘l'
因此,對于字符串,一般不需要也不用[m n].
(2) 對于數據類型
以此文件為例,由于第一個“john’為字符串,因此,直接運行fscanf(fid,'%d或%f',[m n])無法讀取數據,因為數據類型不滿足,會自動停止運行。
所以我們這里把Name列刪除,刪除之后為:
1995 12 5 12.3 3.24
1995 12 7 2.3 2.0
1996 3 2 10.2 0
這里我們可以看到,如果要想把所有數據讀出來,sizeA用N表示應該為12。
另外該文件數據有整數和小數,如果用%d讀的話,按行進行,遇到第一個小數點12.3,只會讀取到12,點后邊的就無法讀取,因此要想把所有數據讀出,需要用%f來進行。
我們執行fscanf(fid,'%f',[2 3]),得到結果如下:
A=fscanf(fid,'%f',[2 3])
A =
1.0e+03 *
1.9950 0.0050 0.0032
0.0120 0.0123 1.9950
發現fscanf從1995開始,共讀取6個數據,并按照2行3列進行排列,到這里我們就會發現,對于數據類型,sizeA=[m n]
會使fscanf讀取的數據個數為N=m*n個數據,并將他們按照m行n列進行排序,排序的時候,先進行列排序,再進行行排序,因此,行數m肯定是有限個數,n卻可以使無窮大的,即inf。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的fscanf不读取_思考了一天,终于把matlab的fscanf中的sizeA搞清楚了的全部內容,希望文章能夠幫你解決所遇到的問題。

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