matlab與modelsim中的檔案操作函式

2022-07-30 10:24:11 字數 1476 閱讀 8450

matlab中 fscanf和fpintf是一對,用fprintf寫的必須用fscanf來讀。

fread和fwrite是一對,用fwrite寫的必須用fread來讀。

同樣的資料,使用fprintf和fwrite寫下去的是不一樣的,但是使用其相應的讀命令讀上來的資料會是一樣的。

文字檔案使用fscanf格式讀取。二進位制檔案用fread讀取。

用文字格式寫的話可以用十進位制 十六進製制等讀取,但是我覺得本質就是讀出字元,然後把 \n或者空格等格式符去掉,之後留下所要的資料。

那麼照這個思路來想的話,其實任何文字格式的檔案都可以用格式%c讀出,只不過每次需要指定讀的長度並且跳過那些格式符不讀。

例如,我需要讀以文字形式儲存的ieee標準的double型資料,應該怎麼辦呢?

先貼一部分資料

4035cfac20000000 3fb31bdce0000000

4025f2a1e0000000 4033678ca0000000

40421bdd80000000 40432d7380000000

402811a080000000 3ffc620c40000000

4047ceb740000000 403a863280000000

40200abec0000000 4032233d60000000

402bc2e900000000 403d0901c0000000

4040058aa0000000 4017c70340000000

3ff908aaa0000000 40380aad80000000

401ed216c0000000 40472a3e00000000

40349c87a0000000 40343133e0000000

這是標準形式的ieee double格式的儲存形式,第一行有兩個資料,分別為21.811220 ,0.074644。

那我要讀取這部分資料怎麼辦呢?前提是以文字形式儲存的資料,以二進位制形式儲存的直接用fread讀就行了。

首先先開啟檔案fid1=fopen('data_out.txt','r');

然後先讀第一行的第乙個數,16位。h=fscanf(fid1,'%c',16);

讀完之後轉化m=hex2num(h);

之後有空格,那就跳過去 fseek(fid1,1,'cof');

再讀乙個數l=fscanf(fid1,'%c',16);

讀完再轉化n=hex2num(l);

之後有個換行符是2位,跳過去fseek(fid1,2,'cof');

ok第一行讀完,現在檔案指標在第二行的第乙個位元組,以後繼續照這樣讀就行了。

modelsim 中fprintf無效,而fwrite是以文字形式讀寫.

fwrite和fdisplay的區別在於fdisplay會在每次寫結束後加\n換行但是fwrite則不會自動加,要想換行需要手動加\n.

modelsim 中一般使用readmemh和readmemb讀取資料檔案存到memory裡邊。資料要用空白或換行符隔開。

modelsim工具問題集

1 modelsim 在編譯大工程時,有時候為了除錯方便,需要出很多不同的小版本。一般新手用指令碼編譯檔案時喜歡用如下方式 vlog sv work work verilog encode frame hw mb2s.v vlog sv work work verilog encode frame ...

modelsim新增庫的方法

modelsim的 功能很強大,但是用它去 一些非標準庫,比如 xilinx altera的fpga或者synopsys綜合出來的網表的時候,需要新增一些廠商自定義的庫。方法是 1 找到包含廠商描述庫的vhdl 以.vhd為副檔名 檔案或者verilog檔案 以.v為副檔名 開啟modelsim,c...

ModelSim建立VCD檔案手冊

教你modelsim建立vcd檔案 2008年07月02日 星期三 14 39 verilog提供一系列系統任務用於記錄訊號值變化儲存到標準的vcd value change dump 格式資料庫中。大多數波形顯示工具支援vcd格式。系統任務 功能 dumpfile file.dump 開啟乙個vc...