如何在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的固有擬合工具箱,在擬合一些比較複雜的函式時,用擬合函式時,引數必須有初始向量,只有禁言豐富的人才可以確定,所以一般建議使用擬合工具箱,簡單函式可以使用擬合函式