1樓:白雲裳愛戰天風
%matlab聯絡之——利用最小二乘法擬合函式
clear;clc
%原始離散點輸入
x=[-1.0 -0.5 0.0 0.5 1.0 1.5 2.0];
y=[-4.447 -0.452 0.551 0.048 -0.447 0.549 4.552];
%原始離散點作圖
figure(1)
plot(x,y,'o','linewidth',2)
%擬合階數定義
n=3+1;
p=ones(n,length(x));
%最小二乘法擬合
p(1,1:length(x))=ones(1,length(x));
pp(1,n)=[1];
for h=2:n
p(h,:)=zeros(1,length(x));
a(h-1)=sum((x.*p(h-1,:)).*p(h-1,:))/sum(p(h-1,:).^2);
if h-2>0
a(h-2)=sum(p(h-1,:).*p(h-1,:))/sum(p(h-2,:).^2);
else
p(h,:)=p(h,:)+(x-a(h-1)).*p(h-1,:);
pp(h,n-1:n)=[1 -a(h-1)];
continue
endp(h,:)=p(h,:)+(x-a(h-1)).*p(h-1,:)-a(h-2)*p(h-2,:);
pp(h,n-h+1:n)=conv([1 -a(h-1)],pp(h-1,n-h+2:n))-a(h-2)*[zeros(1,2) pp(h-2,n-h+3:n)];
end%相關評價引數的求取
a=zeros(n,n);
for h=1:n
a(h,h)=sum(p(h,:).^2);
endb=ones(n,1);
for h=1:n
b(h)=p(h,:)*y';
endfor h=1:n
a(h)=b(h)/a(h,h);
endp_val=0;
for h=1:n
p_val=p_val+a(h)*p(h,:);
endp_a=zeros(1,n);
for h=1:n
p_a=p_a+a(h)*pp(h,:);
ende=sum(y.^2)-y*p_val'
%擬合函式畫圖,同離散點一起顯示
x=linspace(x(1),x(length(x)),10*length(x));
p_val=polyval(p_a,x);
figure(1)
hold on
plot(x,p_val,'r','linewidth',3)
legend('原始離散點','最小二乘法擬合曲線')
xlabel('x'),ylabel('y')
title('最小二乘法擬合示範結果')
請教關於matlab中的m函式和m檔案的程式編寫,謝謝!
2樓:minquan一人
函式檔案
function myfun(a,b,c);
x=-b/2/a-5:0.1:-b/2/a+5;
y=a*x.^2+b*x+c;
plot(x,y);
xlabel('x');ylabel('y');xlim([min(x),max(x)]);
命令視窗中 輸入
myfun(1,1,1)
命令視窗中 輸入
myfun(-1,2,1)
用matlab編寫一個函式檔案和m指令碼檔案
3樓:匿名使用者
懶得開,直接打吧
function out=asdas(a)[m,n]=size(a);
temp=1;
if m*n>5
for i=1:m
for j=1:n
out=asdas(i,j)*out;
endend
else
out=sum(a(:));
end這是最簡單的方法了
編寫一個m檔案,實現分段函式…如下……matlab
4樓:匿名使用者
function y=f(x)
if x<=-1
y=x^2+1;
else if x<1
y=0;
else
y=x^2;end
怎麼把如下數學等式寫成matlab中的m檔案?
5樓:匿名使用者
n = 42;%42種食品
m = 39;%39個時刻
x = randi([1 10],n,m);%42種食品的39個時刻的**,這裡用隨機資料代替
r = zeros(n,n);
for i = 1:n
for j = 1:n
temp1 = 0;%分子
temp2 = 0;%分母
for k = 1:m
temp1 = temp1 + abs(x(i,k) - x(j,k));
temp2 = temp2 + max(x(i,k),x(j,k));
endr(i,j) = 1 - temp1/temp2;
endend
matlab的m檔案中如何定義一個未知函式
6樓:匿名使用者
新建一個.m檔案,第一行輸入下面的格式
function [y,m] = abc(x)其中x為輸入,y和m為輸出,abc是函式名下面就可以寫函式的內容,儲存在某路徑下。
在需要呼叫函式時,當前路徑需要和你存函式m檔案的路徑相同。
[y,m]=abc(x); %x換成你的輸入數值就行了
matlab怎麼在一個m檔案中寫多個函式?
7樓:匿名使用者
在一個m檔案中寫多個函式,每個函式都以function開始,結束可以帶end,也可以不帶(這種情況下,出現另一個function或者到達檔案結尾表明前一個function結束)。
第一個函式作為主函式,可以從該m檔案外部呼叫,其它函式都是區域性函式,只能被m檔案中的函式呼叫。主函式命名最好和m檔名相同,如果不同,則呼叫時應該使用m檔名(不帶副檔名)。
8樓:東方邩狐
只能有一個主函式,其他子函式可以有很多歌
9樓:子北亭
好像只能定義一個,我試了多個都是不行的。除非巢狀使用。matlab每個被呼叫的檔案必須與檔名同名,否則需要使用檔名而非函式名。
matlab中如何建立一個m檔案
10樓:匿名使用者
命令視窗輸入edit
11樓:匿名使用者
選單欄file—new—m
用matlab如何編寫一個函式檔案,實現 n!
12樓:摩羯
function r = addjc(n)n=input('請輸入n的值:')
%階乘求和
k=1;r=0;
while k<=n
r = r + jc(k)
k=k+1;
endfunction s=jc(m)
s=1;k=1;
while k<=m
s=s*k;
k=k+1;
end;
matlab是美國mathworks公司出品的商業數學軟體,用於演算法開發、資料視覺化、資料分析以及數值計算的高階技術計算語言和互動式環境,主要包括matlab和simulink兩大部分。
13樓:劉賀
有直接的命令
:factorial(5)
ans =
120------------------------------function s=jiecheng(n)s=1;
for ii=1:n
s=s*ii;end
matlab中怎麼用M檔案定義分段函式,再用fplot進行函
fun3 x exp x fplot fun3,3,0 m hold on fun4 x cos x fplot fun4,0,3 r 用hold on function y f x x 0 0.1 1 if x 1 2 y 2 x else y 2 1 x endfplot 2 x,2 1 x 0...
matlab中m檔案怎麼呼叫另m檔案的函式
按程式,後面的資料將覆蓋前面的資料,可按下面 function xunhuan k input 迴圈次數 for i 1 k myfunc success xlswrite e testdata.xls w,i endend 這樣會在一個檔案中生成多個工作表 將兩個m檔案放在同一目錄,在第一個m檔案...
在matlab建立函式M檔案,用三重迴圈計算兩個矩陣相乘
我知道的復m檔案的建立有兩種方法制 1 開啟matlab,點bai 擊新建按鈕du,在裡zhi面寫上 點dao儲存就可以了。2 新建一個記事本檔案,寫上 儲存的時候字尾名改為.m,儲存好的檔案就是m檔案了。至於你說的三重迴圈計算兩個矩陣相乘,我不知道你的意思是什麼,在matlab裡面兩個矩陣相乘,只...