2014-02-27 145 views
0

我正在嘗試使用匿名函數爲我的數據創建一個洛倫茲分佈。高斯分佈創建時沒有問題,但洛倫茲分佈遇到此錯誤。錯誤使用/矩陣尺寸必須同意

錯誤:

Error using/

Matrix dimensions must agree.

Error in @(p,x)1/(pi*p(2)*(1+((x-p(1))/(p(2))).^2))

代碼:

% Variables necessary for histograms 
num_bins = 100; 
low_range = linspace(min(low_data), max(low_data), num_bins); 
low_counts = histc(low_data, low_range); 
low_err = sqrt(low_counts); 


% Creating and testing fits 
gauss_fun_form = @(p, x) 1/(p(2)*sqrt(2*pi))*exp(-(x-p(1)).^2/(2*p(2).^2)); 
loren_fun_form = @(p, x) 1/(pi*p(2)*(1+((x-p(1))/(p(2))).^2)); 

low_avg = mean(low_data); 
low_std = std(low_data);  

low_gauss_param = [low_avg low_std]; 
low_gauss = gauss_fun_form(low_gauss_param, low_range); 
low_gauss_scale = max(low_counts)/max(low_gauss); 

low_loren_param = [low_avg 2*log(2)*low_std]; 
low_loren = loren_fun_form(low_loren_param, low_range); 
low_loren_scale = max(low_counts)/max(low_loren); 

回答

1
(pi*p(2)*(1+((x-p(1))/(p(2))).^2)) generate vector of 100 dimensions 

而1爲1個維的向量,所以分割矩陣是無效的,./應適用。改變loren_fun_form的定義如下應該工作

loren_fun_form = @(p, x) 1./(pi*p(2)*(1+((x-p(1))/(p(2))).^2));