根據Matlab的已學知識,寫matlab函式m檔案,具

2021-05-17 07:38:59 字數 4125 閱讀 2615

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裡面兩個矩陣相乘,只...