查看: 1459|回復: 5|關注: 0
打印 上一主題 下一主題

下载辽宁快乐12选5: [已解決] 已知一組數據x,大概服從拉普拉斯分布,如何才能估計出對應的參數呢?

[復制鏈接]

新手

20 麥片

財富積分


辽宁快乐12预测一号码推荐号码 www.exedlj.com.cn 050


10

主題

36

帖子

0

最佳答案
我想用f = fittype('a*exp(-(abs(x-b)/c))');          [cfun,gof] = fit(x,y,f);
但是我不知道y呀,我只有一堆數據(一幅圖像的DCT系數),應該怎么做呢,拜托老師了,還有就是matlab中為什么沒有Laplacefit函數呢,各位有能否分享一下呢

入門

99 麥片

財富積分


50500


1

主題

71

帖子

8

最佳答案
  • 關注者: 1
2#
發表于 2019-2-25 21:15:35 | 只看該作者 |此回復為最佳答案
本帖最后由 18280124054 于 2019-2-25 21:16 編輯

求個y就是了唄。
用hist函數求個分布(密度)圖,不就出來了么。
  1. t=linspace(min(x),max(x),100);
  2. xhist=hist(x,t);
  3. plot(xhist,t);
復制代碼
擬合
  1. ft=fittype()
  2. f=fit(t,xhist,ft)
  3. xfit=f(t)
復制代碼


新手

20 麥片

財富積分


050


10

主題

36

帖子

0

最佳答案
3#
 樓主| 發表于 2019-2-26 16:33:49 | 只看該作者
18280124054 發表于 2019-2-25 21:15
求個y就是了唄。
用hist函數求個分布(密度)圖,不就出來了么。擬合

首先謝謝您的指點,還有一個問題,代碼如下
data=imread(['E:\測試視頻\flower\flower\','1.bmp']);
% I=rgb2gray(data);
I=im2double(data);
J= blkproc(I,[16 16],'dct');
[m,n]=size(J);
x=reshape(J,m*n,1);

% %%直方圖
xi=linspace(min(x),max(x),100);
yi=hist(x,xi);
plot(xi,yi);

% %%擬合過程
laplace=fittype(@(a,b,x) 1./(2*b)*exp(-abs(x-a)./b));
laplacefit=fit(xi',yi',laplace);
yy=laplacefit(xi);
% %
% yyy= 1/(2*laplacefit.b)*exp(-(abs(xi-laplacefit.a)/laplacefit.b));
plot(xi,yy,'r');
錯誤使用 fit>iFit (line 340)
Inf computed by model function, fitting cannot continue.
Try using or tightening upper and lower bounds on coefficients.
問題出在哪里呢?

入門

99 麥片

財富積分


50500


1

主題

71

帖子

8

最佳答案
  • 關注者: 1
4#
發表于 2019-2-26 20:32:16 | 只看該作者
本帖最后由 18280124054 于 2019-2-26 20:41 編輯
葛明博 發表于 2019-2-26 16:33
首先謝謝您的指點,還有一個問題,代碼如下
data=imread(['E:\測試視頻\flower\flower\','1.bmp']);
% I ...

1、報錯的意思是出現擬合過程中出現了無窮大的值(Inf)。

2、你的擬合代碼公式如下:
  1. [email protected](a,b,x)( 1./(2*b)*exp(-abs(x-a)./b));
復制代碼
我畫了一下a=1,b=2的情況,大概如圖。
出現無窮大大概是迭代過程中b太小了,你可以換一個擬合方法。


3、nlinfit:
[beta,r,J]=nlinfit(x,y,’model’,beta0)
beta: 估計出的回歸系數    r:殘差     J:Jacobi矩陣
x:n×m矩陣,對一元非線性回歸,x為n維列向量
y:n維列向量
model:事先用M文件定義的非線性函數
beta0:回歸系數的初始值
  1. <blockquote>func=inline('1./(2*beta(2))*exp(-abs(x-beta(1))./beta(2))','beta','x');
復制代碼
這樣應該可以避免出現Inf的狀況



入門

99 麥片

財富積分


50500


1

主題

71

帖子

8

最佳答案
  • 關注者: 1
5#
發表于 2019-2-26 20:40:05 | 只看該作者
代碼總是亂碼

func=inline('1./(2*c(2))*exp(-abs(x-c(1))./c(2))','c','x');
c0=[mean(xi) max(yi)];  % 越接近準確值運算越快
beta=nlinfit(x,y,func,c0);
a=beta(1);
b=beta(2);

新手

20 麥片

財富積分


050


10

主題

36

帖子

0

最佳答案
6#
 樓主| 發表于 2019-2-28 20:41:05 | 只看該作者
18280124054 發表于 2019-2-26 20:40
代碼總是亂碼

func=inline('1./(2*c(2))*exp(-abs(x-c(1))./c(2))','c','x');

真的非常感謝您,您指導的非常的詳細,但是我的基礎比較差,我會慢慢好好理解的,再次感謝您,,
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則

關閉

站長推薦上一條 /3 下一條

快速回復 辽宁快乐12预测一号码推荐号码 返回列表