如何在Matlab中運用餘弦函數,Matlab是一款常用的數據處理科學軟件,它在日常工作中,教學科研,圖像處理,金融數據分析等等領域均有廣泛的應用,那麼如何在Matlab中運用餘弦函數?
首先我們需要打開Matlab軟件(可通過桌面快捷方式或者開始菜單軟件啟動按鈕,或者軟件安裝文件夾的軟件啟動按鈕打開Matlab軟件)
Matlab軟件打開後的界面如下圖所示,軟件界面包括導航欄,命令欄,變量顯示欄等,軟件上部的菜單中包含豐富的命令,我們將在接下來的步驟中用到其中的`部分命令。
在Matlab軟件的導航欄右擊鼠標,選擇“new file”,“script”,從而新建的一個新的Matlab腳本文件,具體操作如圖所示。
通過雙擊新建的Matlab腳本文件,從而打開“script”,進而可以編輯Matlab腳本文件進而將相關代碼寫入腳本文件。
打開腳本文件後,我們可以往腳本文件中寫入如下命令:
x=1:0.01:10;
y=cos(x);
如圖所示,我們可以通過點擊Matlab軟件的菜單欄上的“run”按鈕從而實現運行剛才所寫入腳本文件的代碼。
我們也可以在command窗口展示運行結果,注意,用以顯示結果的那行代碼尾部不能有分號。
如何用matlab產生正弦表數據
這裏説明兩種方式:
(一)這個方法只在matlab中生成數據表,需要自己手動的
往mif文件中添加數據
1.假設用到的DA芯片為14為,則2^14=16384
2.一個完整的正弦波為0-2pi
3.正弦波ROM的深度為4096(地址總數)
4.由於FPGA中不識別負數,加入一個直流分量,加8192
則用matlab產生正弦表的'函數為:
Y=ceil((16384/2-1)*sin(0:pi*2/4096:2*pi)+8192)
其中ceil函數描述如下:
ceil(x) : 大於x 的最小整數
>> ceil( [3.12 -3.12])ans =4 -3
(二)可以直接生成mif文件
直接生成mif文件
depth = 4096;width =14;x=ceil(16384/2*sin(0:pi*2/4096:2*pi)+8192)
fid = fopen('d:','w');
fprintf(fid,'depth= %d ;
',depth);
fprintf(fid,'width= %d ;
',width);
fprintf(fid,'address_radix=uns;
');
fprintf(fid,'data_radix = uns;
');
fprintf(fid,'Content Begin
');
for(k=1:depth)
fprintf(fid,'%d: %d ;
',k-1,x(k));endfprintf(fid,'end;');
用上面這段程序最大值會出現16384,在Quartus II中會認為是超出數據
範圍,所以需要手動的改寫為16383.------
----把x=ceil(16384/2*sin(0:pi*2/4096:2*pi)+8192) 改寫為下面語句
x=ceil((16384/2-1)*sin(0:pi*2/4096:2*pi)+8192) 就不存在上述問題了
數據量小的話,可以用第一種方法,要是數據量大的話,介意用第二種方法。
方法/步驟
打開matlab在app中找到curve fitting擬合工具箱,打開它
在命令窗口輸入你的原始數據,例如x=1:1:100;y=x;
我們需要通過擬合工具箱來擬合出y=x這個方程得兩個參數a,b
在擬合工具箱的頁面左邊欄把原始數據放進去,查看擬合結果,在如圖所示箭頭區域,可以選擇擬合的'函數,最基本的一階函數,正弦函數
運用擬合函數擬合最基本的是polyfit,
程序如此:
x=1:1:100;
y=x;
m=polyfit(x,y,1);
結果輸出兩個值,用polyfit函數時用法為
[a,b]=polyfit(x,y,n)其中a,b是直線方程y=a*x+b中的a,b兩個參數
x,y是原始數據,n為擬合的階數,
在matlab擬合函數中還有lsqcurvefit等,需要在matlab官網上尋找並看他的用法,我推薦是有matlab的固有擬合工具箱,在擬合一些比較複雜的函數時,用擬合函數時,參數必須有初始向量,只有禁言豐富的人才可以確定,所以一般建議使用擬合工具箱,簡單函數可以使用擬合函數