matlab中定義函式並儲存後怎麼執行翱

2021-05-02 11:24:25 字數 4791 閱讀 7701

1樓:王

matlab自定義函式的幾種方法

1、函式檔案+呼叫命令檔案:需單獨定義一個自定義函式的m檔案;

2、函式檔案+子函式:定義一個具有多個自定義函式的m檔案;

3、inline:無需m檔案,直接定義;

4、匿名函式;

5、syms+subs: 無需m檔案,直接定義;

6、字串+subs:無需m檔案,直接定義;

7、直接通過@符號定義.

1、函式檔案+呼叫函式檔案:定義多個m檔案:

% 呼叫函式檔案:myfile.m

clear

clcfor t=1:10

y=mylfg(t);

end%自定義函式檔案: mylfg.m

function y=mylfg(x) %注意:函式名(mylfg)必須與檔名(mylfg.m)一致

y=x^(1/3);

注:這種方法要求自定義函式必須單獨寫一個m檔案,不能與呼叫的命令檔案寫在同一個m檔案中。

2、函式檔案+子函式:定義一個具有多個子函式的m檔案

%命令檔案:funtry2.m

function =funtry2()

for t=1:10

y=lfg2(t)

fprintf(『m^(1/3)=%6.4f\n』);

endfunction y=lfg2(x)

y= x^(1/3);

%注:自定義函式檔案funtry2.m中可以定義多個子函式function。子函式lfg2只能被主函式和主函式中的其他子函式呼叫。

3、inline:無需m檔案,直接定義;

%inline命令用來定義一個行內函數:f=inline(『函式表示式』, 『變數1』,』變數2』,……)。

呼叫方式:y=f(數值列表) %注意:代入的數值列表順序應與inline()定義的變數名順序一致。

例如:f=inline(『x^2+y』,』x』,』y』);

z=f(2,3)

ans=7

注:這種函式定義方式是將它作為一個內部函式呼叫。特點是,它是基於matlab的數值運算核心的,所以它的運算速度較快,程式效率更高。

缺點是,該方法只能對數值進行代入,不支援符號代入,且對定義後的函式不能進行求導等符號運算。

例:clear

clcf=』x^2』;

syms x g;

g=x^2;

h=inline(『x^2』,』x』);

4. 匿名函式

使用matlab函式控制代碼操作符@,可以定義指向matlab內建函式和使用者自定義函式的函式控制代碼,函式控制代碼也可以像函式一樣的使用。例如:

>>x=-pi:0.1:pi;

>> fh=;

fh =

@cos @sin

>>plot(fh(x))

5、syms+subs: 無需m檔案,直接定義;

用syms定義一個符號表示式,用subs呼叫:

syms f x %定義符號

f=1/(1+x^2); %定義符號表示式

subs(f, 『x』, 代替x的數值或符號)

注:對於在syms中已經定義過的符號變數,在subs中進行替代時,單引號可以省略。但是,如果在syms後又被重新定義為其他型別,則必須加單引號,否則不可替換。

這種函式定義方法的特點是,可以用符號進行替換

syms f x

f=1/(1+x^2);

subs(f, 『x』,』y^2』)

ans=

1/(1+(y^2)^2)

注:該方法的缺點是,由於使用符號運算核心,運算速度會大大降低。

6、字串+subs:無需m檔案,直接定義;

直接定義一個字串,用subs命令呼叫。例如:

f=』1/(1+x^2)』 %定義字串

z=subs(f,』x』,2)

g=subs(f,』x』,』y^2』)

注:優點是,佔用記憶體最少,定義格式方面自由。

缺點是,無法對字元進行符號轉化。

當所要替代的符號在呼叫前都已經有了數值定義,則可以直接呼叫:subs(f).例如:

f=』x^2*y』;

x=2;y=3;

subs(f)

ans=12

7、直接通過@符號定義.

示例如下:

>> f=@(x,y)(x.^2-sin(y))

f =@(x,y)(x.^2-sin(y))

>> f(2,3)

ans =

3.8589

2樓:匿名使用者

你好!定義好了函式及各個引數,直接執行函式名和引數就可以了

比如:在主程式或命令視窗上寫好main(引數)或者直接main執行即可

請問matlab中m檔案寫的程式開頭是定義的function後怎麼執行

matlab用function定義一個函式後 怎麼讓這個函式生效 是把這個m檔案存到哪啊

3樓:卜項離

函式 是要呼叫的,.m檔案應該和呼叫它的.m檔案放在一個資料夾裡才行,不然找不到它的;

譬如函式為 out = function(input1,input2); 此函式有兩個引數,一個返回值;

呼叫它的話,就是 result = function(x1,x2); result 就是用函式function對實際引數x1和x2計算得到的返回值;

matlab的函式定義和函式呼叫基本和其它程式語言是一個道理,引數傳入,引數傳出等

matlab中如何將自己寫的函式儲存到函式庫以便以後呼叫?

4樓:匿名使用者

你把自己儲存檔案的路徑新增到matlab的搜尋路徑,以後就可以直接用了。

file-set path-

5樓:化學工程

太可以了,下面是一個高斯消去法程式,存為mygauss.m。

function x = mygauss(a, b)

% solve linear system by gauss elimination method without pivoting

n = length(b);

for k = 1 : n-1

if a(k,k)==0

fprintf('error: the %dth pivot element equal to zero!\n',k);

return;

endindex = [k+1:n];

m = -a(index,k)/a(k,k);

a(index,index) = a(index,index) + m*a(k,index);

b(index) = b(index) + m*b(k);

endx = zeros(n,1);

x(n) = b(n)/a(n,n);

for i = n-1:-1:1

x(i) = ( b(i) - a(i,[i+1:n])*x([i+1:n]) )/a(i,i);

end呼叫時,

>>a=[10,-7,0;5,-1,5;-3,2,6];

>>b=[7;6;4];

>>mygauss(a,b)

ans =

0.0000

-1.0000

1.0000

或>> mygauss([10,-7,0;5,-1,5;-3,2,6], [7;6;4])

ans =

0.0000

-1.0000

1.0000

也可以在程式種直接呼叫,如:

a=[10,-7,0;5,-1,5;-3,2,6];

b=[7;6;4];

x=mygauss(a,b)

6樓:蓋濰駒問兒

在matlab命令視窗敲入doc

加回車你可以看到所有的函式都在裡面

而且都有解釋怎麼用的。

matlab 如何建立、呼叫自定義函式?

7樓:rsn_灰灰

新建一個m檔案 在m檔案裡面第一行輸入function [x,y]=pll(x1,y1,x2,y2),這裡x1 x2 y1 y2是你函式的輸入值, x y是輸出值,接著定義你要實現的功能,比如:x = x1 + x2; y = y1 + y2; 接著儲存這個m檔案,注意!! 這個m檔案的名字必須是定義的函式的名字,即儲存為pll.

m 否則會出錯。

接著在matlab命令視窗中輸入 pll(1,2,3,4)看看會得到什麼? 也可以另外建立一個m檔案,在這裡呼叫pll()這個函式。

不知道我說清楚了沒。。。。我沒有除錯過,希望不會報錯 -。-

8樓:紫風**

新建一個m檔案

,在editor編輯器中輸入函式function [x,y]=pll(x1,y1,x2,y2)以及其欲實現的功能,儲存,然後在另外一個m檔案中就可以呼叫這個函式,在命令視窗中不能實現呼叫。

我初學,我就是這樣用的,並且那個自定義了函式的m檔案與呼叫此函式的m檔案須在同一儲存路徑下

9樓:阿魯特

我也是這個問題,但是這個是因為你在這裡只是定義一個function,沒有給裡面的引數定義所以會出現錯誤,你在別的m檔案中直接呼叫這個函式,引數匹配就沒有問題。我的已經調好了,你加油!

10樓:匿名使用者

function [x,y]=pll(1,2,3,4)'x1=1 y1=2 x2=3 y2=4

關於函式的定義,關於MATLAB定義函式的問題

沒有哪一部分是y,你沒有理解函式的本質 f是一個作用,使得x對映為 x 1 更基本的是叫做關係的一個 x與z 姑且不寫y,為了讓你清楚些 有關係,是說x的變化影響z,z的變化影響x 當x固定後,若只有唯一一個z與之對應,則z叫做x的函式,使x變化為z的作用我們記作g,即g x z 所以說,你可以任意...

matlab關於定義函式的問題

你可以這樣寫 x 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8 8.5 9 9.5 10 y 5.8 4.7 10.3 13.9 18.6 21.2 24.1 32.0 45.1 47.4 62.1 69.9 84.5 89.0 104.6 11...

c語言後定義函式前面在函式原型中為什麼要加

傳遞引數為陣列或者指標。形參都是以指標形式表示。你的例,第一個引數的實參為int型,第二個的實參可以是int陣列名 第一元素地址 int型指標 指標的值就是地址 int值的地址 x int 是一個型別 就好比如char也是一個型別。double也是一個型別。int型別 int 型別這是兩個型別 加 ...