![MATLAB設(shè)計(jì)FPGA實(shí)現(xiàn)聯(lián)合ISE和Modelsim仿真的FIR濾波器設(shè)計(jì)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/12cc76f1-838c-43cb-b903-1efb67126fd0/12cc76f1-838c-43cb-b903-1efb67126fd01.gif)
![MATLAB設(shè)計(jì)FPGA實(shí)現(xiàn)聯(lián)合ISE和Modelsim仿真的FIR濾波器設(shè)計(jì)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/12cc76f1-838c-43cb-b903-1efb67126fd0/12cc76f1-838c-43cb-b903-1efb67126fd02.gif)
![MATLAB設(shè)計(jì)FPGA實(shí)現(xiàn)聯(lián)合ISE和Modelsim仿真的FIR濾波器設(shè)計(jì)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/12cc76f1-838c-43cb-b903-1efb67126fd0/12cc76f1-838c-43cb-b903-1efb67126fd03.gif)
![MATLAB設(shè)計(jì)FPGA實(shí)現(xiàn)聯(lián)合ISE和Modelsim仿真的FIR濾波器設(shè)計(jì)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/12cc76f1-838c-43cb-b903-1efb67126fd0/12cc76f1-838c-43cb-b903-1efb67126fd04.gif)
![MATLAB設(shè)計(jì)FPGA實(shí)現(xiàn)聯(lián)合ISE和Modelsim仿真的FIR濾波器設(shè)計(jì)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/12cc76f1-838c-43cb-b903-1efb67126fd0/12cc76f1-838c-43cb-b903-1efb67126fd05.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、QQ:290632690 膚淺。制作MATLAB設(shè)計(jì),F(xiàn)PGA實(shí)現(xiàn),聯(lián)合ISE和Modelsim仿真的FIR濾波器設(shè)計(jì) 摘要:本文首先利用MATLAB產(chǎn)生兩個(gè)頻率不一樣的正弦信號(hào),并將這兩個(gè)正弦信號(hào)相加,得到一個(gè)混疊的波形;然后利用MATLAB設(shè)計(jì)一個(gè)FIR低通濾波器,并由Verilog實(shí)現(xiàn),聯(lián)合ISE和Modelsim仿真,實(shí)現(xiàn)濾除頻率較高的信號(hào),并將濾波后的數(shù)據(jù)送到MATLAB中分析。本文首先介紹FIR濾波器的基本原理,然后從目前最流行的的設(shè)計(jì)方式入手,逐步介紹FIR濾波器的設(shè)計(jì),其流程圖如圖1所示:圖1一、 FIR濾波器的基本原理:數(shù)字濾波器是從分析信號(hào)中提取用戶需要的信息,濾去不需要的
2、信號(hào)成分或者干擾成分。數(shù)字濾波器的數(shù)學(xué)模型:線性時(shí)不變數(shù)字濾波器的數(shù)學(xué)模型在時(shí)域中可以用線性常系數(shù)差分方程給出:其等效的Z變換為: 當(dāng) 全為0時(shí),Z域系統(tǒng)函數(shù)只有零點(diǎn),數(shù)字濾波器的單位脈沖響應(yīng)有限,通常這用濾波器被稱為有限沖激響應(yīng)(FIR)濾波器。它的輸出只與當(dāng)前的輸入和過去的輸入有關(guān),跟過去的輸出無關(guān)。FIR濾波器的一個(gè)重要特性是具有線性相位,即系統(tǒng)的相異和頻率成正比,可達(dá)到無失真?zhèn)鬏敗?更加詳細(xì)的介紹FIR濾波器的理論算法知識(shí),請(qǐng)參考別的先關(guān)書籍資料、二、 FIR濾波器的設(shè)計(jì)及驗(yàn)證:1) 由MATLAB產(chǎn)生FIR濾波器的輸入數(shù)據(jù),并存放到.txt文件中用MATLAB產(chǎn)生兩個(gè)頻率分別為:0.
3、5MHz和2MHz的正弦信號(hào),并將這兩個(gè)正弦信號(hào)疊加,得到一個(gè)混疊的信號(hào),并將這個(gè)混疊信號(hào)的波形數(shù)據(jù)存放到C盤根目錄下面的matlab_wave_data.txt文件中。MATLAB實(shí)現(xiàn)代碼如下:clear all;fs = 25000000; % 25M 采樣率t = 0:1/fs:0.0002; % 共0.0002 * 25000000 = 5000個(gè)點(diǎn)f1 = 500000;f2 = 2000000;signal1 = sin(2*pi*f1*t); % 頻率為 0.5MHz 的正弦信號(hào)signal2 = sin(2*pi*f2*t); % 頻率為 2.0MHz 的正弦信% 由于正、余弦
4、波形的值在0,1之間,需要量化成16bit,先將數(shù)值放大y2 = fix(16384 + (214 - 1) * signal1); % 量化到 15bity3 = fix(16384 + (214 - 1) * signal2); % 量化到 15bity1 = y2 + y3; % 量化到 16bit% 再將放大的浮點(diǎn)值量化,并寫道到存放在C盤的文本中fid = fopen('c:/matlab_wave_data.txt', 'wt');fprintf(fid, '%xn', y1); % 以16進(jìn)制的格式將數(shù)據(jù)存放到.txt文件中。如果不
5、用16進(jìn)制,后面% 讀數(shù)會(huì)出錯(cuò)。fclose(fid);plot(y2, 'b');hold on;plot(y3, 'b');hold on;plot(y1, 'r');legend('0.5MHz正弦','2MHz正弦','兩者疊加');title('MATLAB產(chǎn)生的兩個(gè)正弦信號(hào)的疊加波形'); 信號(hào)波形圖如圖2所示:圖2 存放數(shù)據(jù)的文件路徑、名稱已經(jīng)文本的內(nèi)容如圖3所示:圖3用MATLAB回讀C盤根目錄下的matlab_wave_data.txt文件,驗(yàn)證存入的波形數(shù)據(jù)是否正
6、確,MATLAB代碼如下:fid = fopen('c:/matlab_wave_data.txt','r');for i = 1 : 5001;%一共有5001個(gè)數(shù)據(jù)num(i) = fscanf(fid, '%x', 1);%從fid所指的文件中,以16進(jìn)制的方式讀出一個(gè)數(shù)據(jù)endfclose(fid);figure(2);plot(num,'b');legend('MATLAB從txt文件中讀出的原始疊加波形數(shù)據(jù)');title('直接回讀MATLAB產(chǎn)生的兩個(gè)正弦信號(hào)的疊加波形'); 顯示的
7、波形如圖4所示:圖4對(duì)比圖4和圖2中的疊加波形,可知以上操作的正確性。2) 用MATLAB設(shè)計(jì)FIR濾波器輸入信號(hào)是頻率別為0.5MHz和2MHz的正弦信號(hào)的疊加,我們的任務(wù)是設(shè)計(jì)一個(gè)低通濾波器濾除掉2MHz的干擾信號(hào)。因此,我們可以設(shè)計(jì)一個(gè)采樣率為25MHz的低通濾波器,其通帶帶寬為1MHz,阻帶寬度為2MHz。通帶內(nèi)紋波抖動(dòng)為1dB,阻帶下降為80dB。在MATLAB的命令窗口輸入:fdatool命令并回車,打開FDATool工具箱,用MATLAB的FDATool工具設(shè)計(jì)該濾波器,參數(shù)設(shè)置如圖5所示:設(shè)計(jì)好參數(shù)后,點(diǎn)擊DesignFilter,可以在FDATool窗口的左上角看到濾波器的階
8、數(shù)為63階,點(diǎn)擊File àGenerate M-file,并將濾波器命名為mylowfilter。圖5 編寫如下代碼,濾除混疊信號(hào)中的高頻信號(hào)。Hd = mylowfilter; % 濾波器名稱output = filter(Hd, y1); % 對(duì)疊加信號(hào) y ,進(jìn)行濾波處理figure(3);plot(y2, 'k');hold on;plot(output, 'r');legend('0.5MHz原始信號(hào)','濾波后取出的信號(hào)');title('信號(hào)通過MTALAB的低通濾波器后的波形'); 濾波
9、后的波形如圖6所示:圖6生成.coe文件,用于Xilinx的IPCore設(shè)計(jì)濾波器,F(xiàn)DATool窗口點(diǎn)擊File àExport,保持默認(rèn)設(shè)置,點(diǎn)擊Export即可,次數(shù)在MATLAB的workspace窗口多出一個(gè)Num的1*64的數(shù)組,這就是濾波器的系數(shù),如圖7所示:圖7由于MATLAB生成的濾波器系數(shù)全是一些小數(shù),而FPGA只能處理整數(shù),因此我們必須將這些小數(shù)擴(kuò)大一定的倍數(shù),使它們變成整數(shù)。在MATLAB的命令窗口輸入下面的一段代碼然后按Enter,即可將上面這些系數(shù)變?yōu)檎麛?shù),注意這里的*32767,表示將系數(shù)擴(kuò)大32767倍,這里的擴(kuò)大倍數(shù)只能選2N,目的是為了后面濾波后的
10、波形數(shù)據(jù)的高位截取(丟掉低位,即除以2N)。返回ans=0,表示操作正確。coeff=round(Num/max(abs(Num)*32767);% abs() 求絕對(duì)值,max() 求最大值,round() 四舍五入fid = fopen('e:/fircoe.txt','wt'); %將濾波器系數(shù)寫入文件件中fprintf(fid,'%16.0fn',coeff);% 將濾波器系數(shù)以16位浮點(diǎn)數(shù)的格式保存fclose(fid) 程序運(yùn)行的結(jié)果如圖8所示:圖8將文件的格式改為.coe格式,在文件的開口加上:radix = 10;coefdata
11、 = 在每個(gè)數(shù)字前的空格處加一個(gè)逗號(hào)“,”,并在最后一個(gè)數(shù)字后面加上分號(hào)“;”如圖9所示:圖9 這樣就產(chǎn)生了可供FIR濾波器的IPCore可調(diào)用的.coe文件。3) 用Verilog編程讀取MATLAB產(chǎn)生的波形數(shù)據(jù)通過Verilog的$readmemh()函數(shù)即可讀出.txt文件中的數(shù)據(jù)(這里的數(shù)據(jù)是以16進(jìn)制形式存儲(chǔ)的),具體用法如下:reg 15 :0 data_in0:2000; /定義一個(gè)16bit * 2001的數(shù)組initial begin/ 讀出MATLAB產(chǎn)生的波形數(shù)據(jù) 0.5MHz_sin + 4MHz_sin 信號(hào) $readmemh("c:/matlab_wa
12、ve_data.txt", data_in); /將 matlab_wave_data.txt中的數(shù)據(jù)讀入存儲(chǔ)器 data_inEnd 我在modelsim中嘗試用readmemh來讀取matlab生成的數(shù)據(jù),但是一旦到了負(fù)數(shù)的地方就出現(xiàn)問題了,之后的所有數(shù)據(jù)都變成了xxxxx,因此我在用MATLAB產(chǎn)生波形數(shù)據(jù)時(shí)都給正弦信號(hào)添加了一個(gè)偏移量,將正弦信號(hào)平移到了0之上。用Modelsim仿真工具可以看到讀出的數(shù)據(jù),并與原文件數(shù)據(jù)(圖3)比較,可以判斷讀出的數(shù)據(jù)是否正確,這里是ISE和Modelsim聯(lián)合仿真的結(jié)果,如圖10所示:圖104) 由Xilinx的FIR的IPCore實(shí)現(xiàn)FI
13、R濾波器FIR的IPCore的生成步驟就不多說了,簡(jiǎn)單的說一下參數(shù)配置情況:a) 我們使用由MATLAB生成的.coe文件導(dǎo)入濾波器的系數(shù)。b) 輸入信號(hào)的采樣頻率為25MHz,這里必須和MATLAB產(chǎn)生的波形數(shù)據(jù)的采樣頻率保持一致。c) FIR濾波器的運(yùn)行時(shí)鐘,這里我們選擇250MHz,這里必須和仿真文件里給的時(shí)鐘保持一致。d) 輸入數(shù)據(jù)的類型,我們這里選擇了無符號(hào)數(shù),輸入數(shù)據(jù)位寬為16bit,因?yàn)閙odelsim不能讀出負(fù)數(shù)(要么用補(bǔ)碼,要么加偏移)。如圖11、圖12所示:圖11圖12FIR的IPCore的列化如下:FIR16_IP FIR16_IP_ins (.clk(clk), / i
14、nput clk.rfd(rfd), / output rfd 在其上升沿將輸入數(shù)據(jù)加載到濾波器內(nèi)核中.rdy(rdy), / output rdy 在其上升沿輸出濾波器的計(jì)算結(jié)果.din(data_in_reg), / input 15 : 0 din.dout(dout); / output 35 : 0 dout 特別注意這個(gè)數(shù)據(jù)位寬我們主要對(duì)其進(jìn)行簡(jiǎn)單的控制:在rfd 上升沿將輸入數(shù)據(jù)加載到濾波器內(nèi)核中,在rdy 上升沿輸出濾波器的計(jì)算結(jié)果。具體的Verilog代碼如下:always (posedge clk) beginif(reset = 1'b0) begini<=
15、1'b0;m<=1'b0;data_in_reg<=16'h0000;endelse beginrfd_1q<=rfd;rfd_2q<=rfd_1q;if(rfd_1q & rfd) begin/ rfd 信號(hào)的上升沿將輸入數(shù)據(jù)加載到濾波器內(nèi)核中data_in_reg<=data_ini;i <=i + 1;m <=m;if(i = 2002)i<=0;endendendalways (posedge clk) beginif(reset = 1'b0) beginData_out_reg<=0;j&
16、lt;=0;n<=0;endelse beginrdy_1q<=rdy;rdy_2q<=rdy_1q;if(rdy_1q & rdy) beginData_out_reg<=dout;j<=j + 1'b1;n <=n;endendend這里還做了一個(gè)附加功能,將FIR濾波器的輸入數(shù)據(jù)存放到一個(gè).txt文件當(dāng)中,然后用MATLAB去讀取這個(gè)波形文件數(shù)據(jù),看看讀出的波形是否和原來的混疊波形一樣。具體的Verilog和MATLAB代碼如下:integer wr_file;initial wr_file = $fopen("c:/FIR_
17、in_data.txt");always ( m ) beginif(reset = 1'b1) begin$fdisplay(wr_file,"%h", data_in_reg);/ 33bit數(shù)if(j = 11'd2002) /共寫入2001個(gè)數(shù)據(jù)$stop;endendfid = fopen('c:/FIR_in_data.txt','r');for j = 1 : 2000;num1(j) = fscanf(fid, '%x', 1);%這句話的意思是從fid所指的文件以16進(jìn)制方式讀出一個(gè)
18、數(shù)據(jù)。endfclose(fid);figure(4);plot(num1,'r');legend('Verilog讀出的txt文件中的數(shù)據(jù)');title('FIR濾波器的輸入數(shù)據(jù)'); MATLAB讀出的波形數(shù)據(jù)如圖13所示:圖135) 將FIR濾波器的輸出存入.txt文件中有上面的步驟我們已經(jīng)驗(yàn)證了輸入到FIR濾波器的數(shù)據(jù)都是正確的,下面就將FIR濾波器的輸出數(shù)據(jù)保存到一個(gè).txt文件當(dāng)中供MATLAB讀取。/剛剛的問題是,matlab讀一個(gè)數(shù)據(jù)是32bit的,/而FIR的輸出是36bit的,因此高4bit根本沒有讀上來。assignDat
19、a_out31:0 = Data_out_reg35:4;integer w_file;initial w_file = $fopen("c:/FIR_out.txt");always ( n ) beginif(reset = 1'b1) begin$fdisplay(w_file,"%h", Data_out31:14);/ 33bit數(shù)if(j = 11'd2002) /共寫入2001個(gè)數(shù)據(jù)$stop;endend這里我也搞了好久才搞好,這里FIR濾波器的輸出數(shù)據(jù)位寬變成了36bit,而輸入數(shù)據(jù)位寬是16bit,為什么數(shù)據(jù)會(huì)變大幾萬
20、倍呢?因?yàn)槲覀冊(cè)趯V波器的系數(shù)由小數(shù)變成整數(shù)的時(shí)候,對(duì)這些系數(shù)整體擴(kuò)大了32767倍,再做了一個(gè)四舍五入(影響濾波器精度),對(duì)濾波器的系數(shù)擴(kuò)大的倍數(shù)越大,四舍五入對(duì)精度的影響就越小,但是系數(shù)乘的倍數(shù)越大,F(xiàn)PGA在做乘加運(yùn)算也就越復(fù)雜,也就越耗時(shí),越耗資源,因此我們需要找一個(gè)平衡點(diǎn)。這里為了將信號(hào)的幅度變回原始的幅度(盡可能的靠近),我們只能通過將低位截取掉,截取低位相當(dāng)于對(duì)數(shù)據(jù)做除法(除2),所以前面的濾波器系數(shù)的擴(kuò)大倍數(shù)我們一定要用2N,這樣我們?cè)谶@里還原信號(hào)幅度的時(shí)候,只需要截位就能達(dá)到目的。比如這里我們對(duì)濾波器的系數(shù)乘了32767,那我們?cè)谧龀ㄟ€原波形幅度時(shí),只需要除以32767即可
21、(即截掉低16bit)。還有一種操作方式就是我們只保留數(shù)據(jù)的高16bit(和輸入數(shù)據(jù)的位寬保持一致),這兩種方式波形的幅度也就幾倍的差距,我還沒有完全搞懂這里,究竟怎樣才能將波形的幅度完全的還原回去,還是一個(gè)值得好好思考的問題?另一個(gè)問題是我的電腦是32bit位寬的,如果我們一次性讓MATLAB讀取36bit的數(shù)據(jù)那么數(shù)據(jù)的高4bit會(huì)讀不上來,會(huì)導(dǎo)致很奇怪的波形,我也遇到了這個(gè)問題。如圖14所示,波形明顯可以通過一些平移拼合成一個(gè)正弦波。通過對(duì)波形數(shù)據(jù)一個(gè)個(gè)的分析,我找到了這個(gè)問題。圖14圖15是波形幅度發(fā)生變化的截圖:圖156) 由MATLAB讀入FIR濾波器的輸出數(shù)據(jù),并分析濾波結(jié)果由M
22、ATLAB讀取FIR濾波器的輸出數(shù)據(jù),分析波形,具體的代碼如下:fid = fopen('c:/FIR_out.txt','r');for i = 1 : 2000;num(i) = fscanf(fid, '%x', 1);%這句話的意思是從fid所指的文件以16進(jìn)制方式讀出一個(gè)數(shù)據(jù)。endfclose(fid);figure(5);plot(num,'r');y4 = y2;hold on;plot(y4, 'k');legend('經(jīng)過FIR_IPCore濾波后的數(shù)據(jù)','0.5MHz
23、的原始數(shù)據(jù)放大16384倍');title('經(jīng)過FIR濾波器的輸出數(shù)據(jù)'); 波形數(shù)據(jù)如圖16所示:圖16三、 總結(jié)本次設(shè)計(jì)我大約耗時(shí)一周,從0開始研究FIR濾波器的設(shè)計(jì),聯(lián)合了MATLAB、ISE、Modelsim三個(gè)工具,不得不佩服MABLAB在數(shù)據(jù)分析方面強(qiáng)大的功能。本次設(shè)計(jì)走通了FIR濾波器的總體設(shè)計(jì)流程,為以后的工程實(shí)用打下了基礎(chǔ),當(dāng)然還有一些基本問題,如波形幅度如何完美的還原還沒搞清楚,有待進(jìn)一步研究。在實(shí)際工程應(yīng)用時(shí),我們可以通過聯(lián)合MATLAB、ISE、Modelsim三個(gè)工具完全脫離硬件來設(shè)計(jì)、仿真、驗(yàn)證FIR數(shù)字濾波器的性能,肯定能夠大大的縮短設(shè)計(jì)
24、周期,提升濾波器性能。附錄:附錄為Verilog源代碼和MATLAB源代碼,這些源代碼是經(jīng)過調(diào)試的,是可以直接使用的。供大家參考。Verilog源代碼:module FIR_Lowpass(clk,reset, Data_out);inputclk;inputreset;output31 :0Data_out;reg35 :0Data_out_reg;reg 10:0 i = 0;reg 10:0 j = 0;reg 15 :0 data_in0:2000; /定義一個(gè)16bit * 2001的數(shù)組reg 15:0 data_in_reg = 0;initial begin/ 讀出MATLAB
25、產(chǎn)生的波形數(shù)據(jù) 0.5MHz_sin + 4MHz_sin 信號(hào)$readmemh("c:/matlab_wave_data.txt", data_in); /將 matlab_wave_data.txt中的數(shù)據(jù)讀入存儲(chǔ)器 data_inendwirerfd;wirerdy;wire 35:0dout;regrfd_1q;regrfd_2q;regrdy_1q;regrdy_2q;regn = 0;regm = 0;always (posedge clk) beginif(reset = 1'b0) begini<=1'b0;m<=1'b
26、0;data_in_reg<=16'h0000;endelse beginrfd_1q<=rfd;rfd_2q<=rfd_1q;if(rfd_1q & rfd) begin/ rfd 信號(hào)的上升沿將輸入數(shù)據(jù)加載到濾波器內(nèi)核中data_in_reg<=data_ini;i <=i + 1;m <=m;if(i = 2002)i<=0;endendendFIR16_IP FIR16_IP_ins (.clk(clk), / input clk.rfd(rfd), / output rfd 在其上升沿將輸入數(shù)據(jù)加載到濾波器內(nèi)核中.rdy(rd
27、y), / output rdy 在其上升沿輸出濾波器的計(jì)算結(jié)果.din(data_in_reg), / input 15 : 0 din.dout(dout); / output 35 : 0 doutalways (posedge clk) beginif(reset = 1'b0) beginData_out_reg<=0;j<=0;n<=0;endelse beginrdy_1q<=rdy;rdy_2q<=rdy_1q;if(rdy_1q & rdy) beginData_out_reg<=dout;j<=j + 1'b
28、1;n <=n;endendend/剛剛的問題是,matlab讀一個(gè)數(shù)據(jù)是32bit的,而FIR的輸出是36bit的,因此高4bit根本沒有讀上來。/ assignData_out31:0 = Data_out_reg35:4;assignData_out31:0 = Data_out_reg35:4;/*integer wr_file;initial wr_file = $fopen("c:/FIR_in_data.txt");always ( m ) beginif(reset = 1'b1) begin$fdisplay(wr_file,"%h
29、", data_in_reg);/ 33bit數(shù)if(j = 11'd2002) /共寫入2001個(gè)數(shù)據(jù)$stop;endend/*integer w_file;initial w_file = $fopen("c:/FIR_out.txt");always ( n ) beginif(reset = 1'b1) begin$fdisplay(w_file,"%h", Data_out31:14);/ 33bit數(shù)if(j = 11'd2002) /共寫入2001個(gè)數(shù)據(jù)$stop;endendendmoduleMATLA
30、B源代碼%* MATLAB產(chǎn)生信號(hào)并保存到.txt文件中 *clear all;fs = 25000000; % 25M 采樣率t = 0:1/fs:0.0002;% 共0.0002 * 25000000 = 5000個(gè)點(diǎn)f1 = 500000;f2 = 2000000;signal1 = sin(2*pi*f1*t); % 頻率為 0.5MHz 的正弦信號(hào)signal2 = sin(2*pi*f2*t); % 頻率為 4.0MHz 的正弦信號(hào)%y1 = signal1 + signal2; % 兩個(gè)正弦信號(hào)疊加%x = linspace(0, 12.56, 2048); % 在區(qū)間0,6.2
31、8 = 2*pi 之間等間隔的取1024個(gè)點(diǎn)%y1 = sin(x); % 計(jì)算相應(yīng)的余弦值% 由于正、余弦波形的值在0,1之間,需要量化成16bit,先將數(shù)值放大%y1 = y1 * 32768; % 32 * 1024 = 32768%y1 = y1 * 16384; % 32 * 1024 = 32768%y1 = y1 + 32768;y2 = fix(16384 + (214 - 1) * signal1);y3 = fix(16384 + (214 - 1) * signal2);y1 = y2 + y3;% 再將放大的浮點(diǎn)值量化,并寫道到存放在C盤的文本中fid = fopen(
32、'c:/matlab_wave_data.txt', 'wt');%fprintf(fid, '%16.0fn', y1); % 在寫文件時(shí)量化為16bit的定點(diǎn)實(shí)數(shù)【%16.0f,16.0表示16bit定點(diǎn)數(shù),f表示實(shí)數(shù)】,范圍是: -32768 - 32767fprintf(fid, '%xn', y1); % 在寫文件時(shí)量化為16bit的定點(diǎn)實(shí)數(shù)【%16.0f,16.0表示16bit定點(diǎn)數(shù),f表示實(shí)數(shù)】,范圍是: -32768 - 32767fclose(fid);figure(1);plot(y2, 'b'
33、);hold on;plot(y3, 'b');hold on;plot(y1, 'r');legend('0.5MHz正弦','2MHz正弦','兩者疊加');title('MATLAB產(chǎn)生的兩個(gè)正弦信號(hào)的疊加波形');%* MATLAB回讀保存到.txt文件中的信號(hào) *fid = fopen('c:/matlab_wave_data.txt','r');for i = 1 : 5001;%num(i) = fscanf(fid, '%f', 1);%從fi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025股份轉(zhuǎn)讓合同
- 煤礦集中檢修方案
- 襄陽防腐木屋施工方案
- 青島垂直植物墻施工方案
- 2024-2025學(xué)年高中歷史 專題八 當(dāng)今世界經(jīng)濟(jì)的全球化趨勢(shì) 第三課 經(jīng)濟(jì)全球化的世界說課稿 人民版必修2
- 凈化設(shè)備合同范例
- 28 棗核 說課稿-2023-2024學(xué)年統(tǒng)編版語文三年級(jí)下冊(cè)
- Unit 3 Fit for life Welcome to the unit 說課稿-2024-2025學(xué)年高中英語譯林版(2020)選擇性必修第二冊(cè)
- 橋面防腐木施工方案
- 線性系統(tǒng)理論鄭大鐘第二版
- 寧騷公共政策學(xué)完整版筆記
- 走進(jìn)奧運(yùn)奧運(yùn)知識(shí)簡(jiǎn)介
- 項(xiàng)目負(fù)責(zé)人考試題庫含答案
- GB/T 7251.5-2017低壓成套開關(guān)設(shè)備和控制設(shè)備第5部分:公用電網(wǎng)電力配電成套設(shè)備
- 2023年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招(數(shù)學(xué))試題庫含答案解析
- 中考語文非連續(xù)性文本閱讀10篇專項(xiàng)練習(xí)及答案
- 勇者斗惡龍9(DQ9)全任務(wù)攻略
- 經(jīng)顱磁刺激的基礎(chǔ)知識(shí)及臨床應(yīng)用參考教學(xué)課件
- 小學(xué)語文人教四年級(jí)上冊(cè)第四單元群文閱讀“神話故事之人物形象”PPT
- ISO 31000-2018 風(fēng)險(xiǎn)管理標(biāo)準(zhǔn)-中文版
評(píng)論
0/150
提交評(píng)論