2016年5月17日 星期二

matlab 9*9乘法表

M=9;
%================第一種寫法
 for i=1:M
        for j=1:M
             NineNineMatrix(i,j)=i*j;
        end
    end

%================第二種寫法
A=[1:M]';
B=[1:M];
NineNineMatrix2=A*B;
%================第三種寫法
C=repmat(1:M,M,1);
D=repmat([1:M]',1,M);
NineNineMatrix3=repmat(1:M,M,1).*repmat([1:M]',1,M);

所有的變數要盡可能的以符號代替,這樣才可以方便做修改。

SanDisk iXpand Usb 3.0 32Gb


實際測試結果 




2014年3月20日 星期四

Matlab讀取MySQL亂碼


MATLAB讀取資料庫中文資料,如果產生亂碼,只需要修改紅色箭頭處即可解決。




關鍵字:MATLAB、SQL、UTF8、亂碼、MySQL

2013年6月28日 星期五

Matlab fmincon的用法

%問題描述
假設你要處理一個最佳化問題,目標函數是ObjFun(X1,X2,X3,....,Xn)其中有變數 X1,X2,X3,....,Xn,這些變數可以用向量或是單一的純量,看需求而定。
則你要的就是min ObjFun(X1,X2,X3,....,Xn)
限制在
            A*X1 =B                        ----------------------------------(1)
Aeq*X1=beq;                            ----------------------------------(2)
       NonlineConFun(X1)          
----------------------------------(3)

     NonlineFun(X1)=0;              ----------------------------------(4)
%========================================================
如果你有限制式(1) (2) (3) (4)其中之一,則就要用到fmincon 不然就單純使用fminsearch
,這些限制式可以全部都用到也可以只用到其中一個兩個或三個限制式,如果沒有使用就是以A=[]取代,如下面的寫法,則最佳化方程式就可以正確執行了。
簡單抽象範例如下。 另外一篇在提供實際執行案例。
%==============初始值=====================================
options = optimset('Display','iter','TolFun',1e-7,'MaxFunEvals',10000);
%options 設定最佳化在執行時候的選項,
%詳細請在Matlab的Help輸入 Optimization Options  Reference
nonlcon=[];沒有非線性項的初始值
A=[];
b=[];
Aeq=[];
beq=[];
lb=[0 0 0];%假設函數是要變數
X1是一個1*3的向量,X1變數的下界
ub=[100 100 100];X1變數的上界
x01=[1 0 0] 問題函數
X1的初始值
%==============初始值=====================================
%最佳化函數沒有非線性項 nonlcon
OptValue1 = fmincon(@(X1) ObjFun(X1,X2,X3,....,Xn),x01,A,b,Aeq,beq,lb,ub,nonlcon,options)
%最佳化函數有非線性項 Fun_non

OptValue2= fmincon(@(X1) ObjFun(X1,X2,X3,....,Xn),x01,A,b,Aeq,beq,lb,ub,@Fun_non,options);


%@ 表示handle 就是以該變數的記憶體位置來運算數值結果,是抽象的概念。
%@Fun_non 表示該限制式與@(X1) ObjFun(X1,X2,X3,....,Xn) 的變數是一樣的值,也就是說X1=向量A,則@Fun_non 也要帶入向量A。

2013年6月10日 星期一

matlab 計算程式運算時間

matlab中有兩個計算程式CPU的耗費時間方法

第一個為最常用的tic,toc。
tic
運算程式
toc
實際例子 Example                                                                                
  tic                                  
n=1000;                                                          
A=rand(n,n);                                                          
b=rand(n,1);  
x = A\b;                                                                             
   toc                                                                    
結果 Result
Elapsed time is 0.069797 seconds.

第二個為 profile,對於整個執行過程的函數做個別計算CPU的耗費時間
實際例子 Example                                                                                
  profile on    %執行函數運算時間計算                                        
x1 = randn(1,100);                                                          
x2 = randn(1,100);                                                          
x3 = randn(1,100);  
HistValuex1 = hist(x1);                                                                              
HistValuex2 = hist(x2);                                                                   
HistValuex3 = hist(x3);                                                                   
mean(x1)                                                                                          
var(x1) 
profile viewer     %顯示計算時間
p = profile('info');%定義計算時間所暫存的記憶體位置  
profsave(p,'profile_results')   %將計算時間存檔
結果 Result

2013年3月20日 星期三

CDS 報價 (市場流動性高) Last Quote for the most Liquid Credit Default Swaps

Markit Group has developed this free 

"Last Quote for the most Liquid Credit Default Swaps" 

pricing report to address a public interest in CDS prices.

http://www.markit.com/cds/most_liquid/markit_liquid.shtml

Markit 將市場上流動性較高的CDS,把每日的最後一筆報價公開出來。

如果有需要的可以直接點連結

2013年3月12日 星期二

Matlab 模擬股價 以及 選擇權價格 Simulate Stock Price and Option Value


             S_0 = 100
          sigma = 0.4;
                  r = 0.012;
     dividend = 0.05;%股利
        Start_t  =  0;
Maturity_T  =  5;
          Tday  =  360;
               dt  =  1;
  StrikePrice = 80;
                t_i = (0:dt:Maturity_T*Tday)/Tday;
        PathM  = 10000; %路徑
          SizeM = size(t_i,2);
S(1:PathM,1)  =  S_0;
               h  =  dt/Tday;
for j=2:SizeM
          S(1:PathM,j)=S(1:PathM,j-1)+r*S(1:PathM,j-1).*repmat((t_i(1,j)-t_i(1,j-1)),PathM,1)+sigma*S(1:PathM,j-1).*repmat(sqrt(h),PathM,1).*randn(PathM,1);
end
%模擬的值  
    CallValue=mean(max((S(:,SizeM)-StrikePrice),0))*exp(-r*Maturity_T)
     PutValue=mean(max((StrikePrice-S(:,SizeM)),0))*exp(-r*Maturity_T)
%Matlab內建的公式值    
  [Call, Put] = blsprice(S_0, StrikePrice, r, Maturity_T, sigma, 0)