有兩種方法,一種是用matlab自帶的遺傳演算法工具箱;還有一種是自己編寫遺傳演算法解決問題。第二種方法的話,網上可以找到很多遺傳演算法的matlab代碼,我也可以提供。第一種的話,有一定的局限性。
❷ 如何用MATLAB編寫相位相關演算法
fft()可以直接fourier變換,然後會自動得到幅度譜\相位譜\能量譜數據.
找到正確的相位譜數據列,和另一經f變換的數據的相位譜做相關.
挺麻煩,說不清。
參考《定量側井聲學》唐曉明著第三章第二節中「波形疊加相干法」,有些類似。
還可以用這個相干係數co=((序列{Ai}求和-{Ai}平均)*(序列{Bi}求和-{Bi}平均))/根號下((序列{Ai}求和-{Ai}平均)平方* ((序列{Bi}求和-{Bi}平均)平方)
❸ matlab演算法
拉格朗日function y=lagrange(x0,y0,x)n=length(x0);m=length(x);for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=p*y0(k)+s; end y(i)=s;end SOR迭代法的Matlab程序 function [x]=SOR_iterative(A,b)% 用SOR迭代求解線性方程組,矩陣A是方陣 x0=zeros(1,length(b)); % 賦初值 tol=10^(-2); % 給定誤差界 N=1000; % 給定最大迭代次數 [n,n]=size(A); % 確定矩陣A的階 w=1; % 給定鬆弛因子 k=1; % 迭代過程 while k<=N x(1)=(b(1)-A(1,2:n)*x0(2:n)')/A(1,1); for i=2:n x(i)=(1-w)*x0(i)+w*(b(i)-A(i,1:i-1)*x(1:i-1)'-A(i,i+1:n)*x0(i+1:n)')/A(i,i); end if max(abs(x-x0))<=tol fid = fopen('SOR_iter_result.txt', 'wt'); fprintf(fid,'\n********用SOR迭代求解線性方程組的輸出結果********\n\n'); fprintf(fid,'迭代次數: %d次\n\n',k); fprintf(fid,'x的值\n\n'); fprintf(fid, '%12.8f \n', x); break; end k=k+1; x0=x; end if k==N+1 fid = fopen('SOR_iter_result.txt', 'wt'); fprintf(fid,'\n********用SOR迭代求解線性方程組的輸出結果********\n\n'); fprintf(fid,'迭代次數: %d次\n\n',k); fprintf(fid,'超過最大迭代次數,求解失敗!'); fclose(fid); end Matlab中龍格-庫塔(Runge-Kutta)方法原理及實現龍格-庫塔(Runge-Kutta)方法是一種在工程上應用廣泛的高精度單步演算法。由於此演算法精度高,採取措施對誤差進行抑制,所以其實現原理也較復雜。該演算法是構建在數學支持的基礎之上的。龍格庫塔方法的理論基礎來源於泰勒公式和使用斜率近似表達微分,它在積分區間多預計算出幾個點的斜率,然後進行加權平均,用做下一點的依據,從而構造出了精度更高的數值積分計算方法。如果預先求兩個點的斜率就是二階龍格庫塔法,如果預先取四個點就是四階龍格庫塔法。一階常微分方程可以寫作:y'=f(x,y),使用差分概念。(Yn+1-Yn)/h= f(Xn,Yn)推出(近似等於,極限為Yn')Yn+1=Yn+h*f(Xn,Yn)另外根據微分中值定理,存在0<t<1,使得Yn+1=Yn+h*f(Xn+th,Y(Xn+th))這里K=f(Xn+th,Y(Xn+th))稱為平均斜率,龍格庫塔方法就是求得K的一種演算法。利用這樣的原理,經過復雜的數學推導(過於繁瑣省略),可以得出截斷誤差為O(h^5)的四階龍格庫塔公式:K1=f(Xn,Yn);K2=f(Xn+h/2,Yn+(h/2)*K1);K3=f(Xn+h/2,Yn+(h/2)*K2);K4=f(Xn+h,Yn+h*K3);Yn+1=Yn+h*(K1+2K2+2K3+K4)*(
❹ 如何看matlab 自帶函數 的演算法是怎麼編的
matlab函數的源程序都可以看到的,如果不是高手幾乎看不懂!!
到matlab文件夾搜索「函數名」會找到那個m文件,打開看就行了
❺ 用matlab編寫兩個排序函數,分別使用插入排序演算法、起泡排序演算法。
function y=bubblesort(x)
%冒泡法排序.
r=length(x);
for i=1:r-1
for j=i+1:r
if x(i)>x(j)
temp=x(i);
x(i)=x(j);
x(j)=temp;
end
end
end
y=x;
function y=insertionsort(x)
%插入法排序.
r=length(x);
for i=1:r
for j=1:r-1
if x(j)>x(j+1)
temp=x(j);
x(j)=x(j+1);
x(j+1)=temp;
end
end
end
y=x;
❻ 請高手幫忙:MATLAB程序 編寫一個程序,要求實現下列演算法:首先將圖像分割成許多8X8的子圖像
clearall;
closeall;
clc;
I=double(imread('elain.bmp'));%讀入圖像
imshow(uint8(I));%顯示圖像
[Mro,Nco]=size(I);%獲得讀入圖像的大小
fun1=@fft2;%獲得fft變換函數的句柄
Imagefft=blkproc(I,[8,8],fun1);%圖像塊進行fft變換
Imtemp=double(zeros(Mro,Nco));%設置臨時變數用於存處理後的圖像值
forii=1:8:Mro
forjj=1:8:Nco
Imtemp(ii:ii+3,jj:jj+3)=Imagefft(ii:ii+3,jj:jj+3);%捨去小的變換系數
end
end
fun2=@ifft2;
Imageifft=blkproc(Imtemp,[8,8],fun2);%分塊逆變換
huifu=uint8(abs(Imageifft));%取整
figure;
imshow(huifu);%顯示圖像
❼ matlab 演算法如何使用
遺傳演算法可以用來最優化計算,即計算一個東西的最大或最小的東西,或者最優解。不知道你想用來具體解決什麼問題,沒法仔細回答。你把具體想幹啥和原始數據發到郵箱[email protected],我可以幫你解答
❽ matlab,有哪些是線性回歸演算法!
2015a版的matlab有如下的線形回歸演算法。
方法名 函數名 說明
1.多元線性回歸 fitlm 具有多個預測變數的線性回歸
2.逐步回歸 stepwise 互動式逐步回歸
3多目標的多元線性回歸 mvregress 使用多變數輸出的線性回歸
4有正則化的多元線性回歸 lasso 使用彈性網正則化的多元線性回歸
5有正則化的多元線性回歸 ridge Ridge回歸