matlab中怎么定义一个函数? matlab 如何建立、调用自定义函数?

matlab\u4e2d\u600e\u4e48\u5b9a\u4e49\u4e00\u4e2a\u51fd\u6570

\u51fd\u6570\u6587\u4ef6\u9700\u8981\u5728\u7f16\u8f91\u5668\u4e2d\u63d0\u524d\u7f16\u597d\u7a0b\u5e8f\u3002\u70b9\u51fb\u4e0a\u9762\u7684\u9ec4\u8272\u201c+\u201d\u53f7\uff0c\u6709\u4e00\u4e2afunction\uff0c\u70b9\u5f00\u5c31\u53ef\u4ee5\u7f16\u5199\u51fd\u6570\u3002

\u6211\u7684\u662f\u4e2d\u6587\u7248\uff0c\u548c\u4f60\u7684\u5bf9\u7167\u7740\u53ef\u4ee5
\u51fd\u6570\u6587\u4ef6\u4e0d\u53ef\u4ee5\u76f4\u63a5\u8fd0\u884c\uff0c\u5fc5\u987b\u4fdd\u5b58\u4e3am\u6587\u4ef6\u540e\uff0c\u5728\u4f60\u7684\u4e3b\u7a0b\u5e8f\u5185\u8c03\u7528\uff0c\u5e73\u5e38\u7528\u7684\u5f88\u591a\u51fd\u6570\u90fd\u662f\u8fd9\u4e48\u7528\u7684\uff0c\u6bd4\u5982\u8bf4\u6c42\u4f59\u51fd\u6570 rem(x,y) ,\u5982\u679c\u6ca1\u6709x\uff0cy\u7684\u5b9e\u9645\u503c\u662f\u6ca1\u6709\u51fd\u6570\u7684\u5b9e\u9645\u610f\u4e49\u7684\u3002
\u9644\u4e0a\u6211\u4ee5\u524d\u7684\u4e00\u4e9b\u7b80\u5355\u7684\u81ea\u5b9a\u4e49\u51fd\u6570\u5427\u3002


\u8bb0\u5f97\u4e00\u5b9a\u8981\u4fdd\u5b58m\u6587\u4ef6\u5728\u8c03\u7528

方法:

1、函数文件+调用函数文件:定义多个M文件;

% 调用函数文件:myfile.m

clear

clc

for t=1:10

y=mylfg(t);

fprintf(‘M^(1/3)=%6.4f
’,t,y);

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
’);

End

function y=lfg2(x)

Y= x^(1/3);

%注:自定义函数文件funtry2.m中可以定义多个子函数function。子函数lfg2只能被主函数和主函数中的其他子函数调用。

3、Inline:无需M文件,直接定义;

%inline命令用来定义一个内联函数:f=inline(‘函数表达式’, ‘变量1’,’变量2’,……)。

调用方式:y=f(数值列表) %

注意:代入的数值列表顺序应与inline()定义的变量名顺序一致。



自定义函数的途径:
M文件函数(M file function)
在线函数(Inline Function)
匿名函数(Anonymous Function)
1.M文件函数
范例
function c=myadd(a,b)
%这里可以写函数的使用说明,前面以%开头
%在工作区中,help myadd将显示此处的说明
c=a+b;
%end %非必须的
第一行function告诉Matlab这是一个函数,a,b是输入,c是输出,myadd是函数名。以m文件定义的函数必须保存为函数名的形式,上例中,函数应保存为myadd.m。要使用myadd函数,该函数必须在Matlab的搜索路径中。
调用方式:
在Matlab命令符后输入
a=1;b=2;
c=myadd(a,b)
关于m文件定义函数还有许多的说明,暂时略去。。。
2.在线函数(Inline Function)
通常作为参数传递给另外一个函数。比如fminsearch,lsqcurvefit等函数需要以函数作为参数。
在线函数从字符串表达式创建函数,例如:
f=inline('x.^2','x');
创建了函数f(x)=x^2。要计算f(3),在工作区输入f(3)即可。f([2 3 4])计算在x=2 3 4时的值
f=inline('x+y','x','y')
创建了二元函数f(x,y)=x+y,工作区输入f(2,3)计算2+3,等同于feval_r(f,2,3)。
3.匿名函数(Anonymous Function)
匿名函数使用函数句柄来表示匿名函数,定义形式为
函数句柄=@(变量名) 函数表达式
例如:
f=@(x) x.^2
定义了函数f(x)=x^2,f(2)计算在x=2处的值。
匿名函数可以调用Matlab函数,也可以使用工作区中存在的变量,例如
a=2;
f=@(x) x.^2+a
f(2) %计算时引用了变量a
a=0;
f(2) %仍然引用的是a=2
匿名函数也可以由Matlab的内置函数或M文件函数创建,例如
f=@sin %f(x)=sin(x)
f(pi/2) %sin(pi/2)
functions(f) %查看函数信息
利用单元数组可以创建多个函数的句柄,例如
f={@sin @cos}
f{1}(pi/2) %计算sin(pi/2)
f{2}(pi) %计算cos(pi)
函数句柄的另一个重要特征是可以用来表示子函数、私有函数和嵌套函数。
Matlab 7以后,建议以匿名函数取代在线函数!!!
在创建匿名函数时,Matlab记录了关于函数的信息,当使用句柄调用该函数的时候,Matlab不再进行搜索,而是立即执行该函数,极大提高了效率。

只有在m文件中定义的第一个函数才可以在命令窗口直接调用,并且文件名字必须和函数名字相同。命令窗口是不能定义函数的

  • Matlab瀹氫箟鍑芥暟鎬庝箞鎿嶄綔
    绛旓細Matlab瀹氫箟鍑芥暟鐨勮缁嗘搷浣滄暀绋嬫柟娉曚竴锛氶氳繃inline鍑芥暟瀹氫箟鍑芥暟鎵撳紑matlab锛屽湪鍛戒护琛岀獥鍙d腑杈撳叆鈥渇=inline(5*x+1,x)鈥濓紝鎸夊洖杞﹂敭鍒涘缓f(x)=5*x+1鍐呰仈鍑芥暟锛屽鍥炬墍绀猴細杈撳叆鈥渪=3;f(x)鈥濓紝鎸夊洖杞﹂敭锛屽彲浠ュ緱鍒癴(x)绛変簬16锛屽鍥炬墍绀猴細鏂规硶浜岋細鍖垮悕鍑芥暟瀹氫箟鍦ㄥ懡浠よ绐楀彛涓緭鍏モ渇=@(x)5*x+3鈥濓紝...
  • matlab鎬庝箞瀹氫箟鍑芥暟
    绛旓細鍏蜂綋濡備笅锛氶氳繃inline鍑芥暟瀹氫箟鍑芥暟锛屾墦寮matlab锛屽湪鍛戒护琛岀獥鍙d腑杈撳叆鈥渇=inline('5*x+1'锛'x')鈥濓紝鎸夊洖杞﹂敭鍒涘缓f(x)=5鍖垮悕鍑芥暟瀹氫箟鍦ㄥ懡浠よ绐楀彛涓緭鍏モ渇=@(x)5*x+3鈥濓紝鎸夊洖杞﹂敭瀹氫箟鍑芥暟f=@(x)5*x+3锛屽垱寤簃鍑芥暟鍦╩atlab涓偣鍑绘柊寤猴紝閫夋嫨鍑芥暟锛屽彲浠ョ湅鍒板凡鍒涘缓浜唌鍑芥暟锛屽彲鍦ㄨ剼鏈枃浠朵腑璋冪敤...
  • matlab濡備綍瀹氫箟鍑芥暟
    绛旓細matlab濡備綍瀹氫箟鍑芥暟锛1銆侀鍏堟墦寮杞欢锛屽湪鈥滄柊寤衡濅腑鍒涘缓涓涓嚱鏁般2銆佺劧鍚庡畾涔変竴涓猼est鍑芥暟锛岃緭鍏ュ浘涓殑鏁版嵁锛宼est鏄嚱鏁板悕锛宺esult鏄繑鍥炵粨鏋滐紝a鍜宐鏄緭鍏ュ弬鏁般3銆佹帴鐫鍦ㄥ懡浠よ绐楀彛杈撳叆鈥渢est锛10,20锛夆濓紝璋冪敤test锛屼細鍑虹幇杩斿洖缁撴灉30銆4銆佷篃鍙互鏂板缓鑴氭湰锛屾妸鍑芥暟鍐欏叆鑴氭湰锛岀敤鑴氭湰璋冪敤鍑芥暟锛岃兘鐩存帴杩...
  • 鍦MATLAB涓濡備綍瀹氫箟涓涓嚱鏁?
    绛旓細1銆MATLAB绋嬪簭杩愯閿欒鍚庯紝鍒囨崲鍒癕ATLAB鍛戒护琛屼腑锛岃瀵熷懡浠よ涓殑閿欒淇℃伅锛岀‘瀹氶敊璇師鍥犮2銆佷綘鍙兘鍐欎簡涓剼鏈▼搴忔枃浠讹紝鍏朵腑瀹氫箟浜嗗瓙鍑芥暟锛屽湪杩愯鏃跺氨寮瑰嚭浜嗚繖涓彁绀恒3銆佷竴鑸儏鍐典笅锛屽湪鍑芥暟鏂囦欢涓墠鑳藉畾涔夊瓙鍑芥暟锛屽湪鑴氭湰鏂囦欢涓笉鍏佽瀹氫箟瀛愬嚱鏁般4銆佽繖鏄釜鍩烘湰鐨勮姹傘5銆2銆涓涓嚱鏁锛屽寘鎷畾涔夊拰璋冪敤...
  • matlab鎬庝箞寤虹珛鑷瀹氫箟鍑芥暟
    绛旓細matlab寤虹珛鑷畾涔夊嚱鏁版湁涓夌褰㈠紡锛1銆佸尶鍚嶅嚱鏁帮紝inline锛堬級銆俧un=inline锛'鍑芥暟琛ㄨ揪寮'锛屸樺彉閲忓悕鈥欙級2銆佸彞鏌勫嚱鏁帮紝@锛堬級銆俧un=@锛堝彉閲忓悕锛夊嚱鏁拌〃杈惧紡 3銆佽嚜瀹氫箟鍑芥暟鏂囦欢銆俧un.m function y=fun(鍙橀噺鍚)y=鍑芥暟琛ㄨ揪寮 end 濡傝繕鏈変笉鏄庣櫧鐨勯棶棰橈紝鍙互浜ゆ祦銆
  • matlab涓庝箞瀹氫箟涓涓嚱鏁
    绛旓細娉細鑷瀹氫箟鍑芥暟鏂囦欢funtry2.m涓彲浠ュ畾涔夊涓瓙鍑芥暟function銆傚瓙鍑芥暟lfg2鍙兘琚富鍑芥暟鍜屼富鍑芥暟涓殑鍏朵粬瀛愬嚱鏁拌皟鐢ㄣ3銆両nline:鏃犻渶M鏂囦欢锛岀洿鎺ュ畾涔夛紱inline鍛戒护鐢ㄦ潵瀹氫箟涓涓鍐呰仈鍑芥暟锛歠=inline(鈥樺嚱鏁拌〃杈惧紡鈥, 鈥樺彉閲1鈥,鈥欏彉閲2鈥,鈥︹)銆傝皟鐢ㄦ柟寮忥細y=f(鏁板煎垪琛)娉ㄦ剰锛氫唬鍏ョ殑鏁板煎垪琛ㄩ『搴忓簲涓...
  • matlab鎬庝箞瀹氫箟鍑芥暟鍟?
    绛旓細matlab涓畾涔夊嚱鏁鐨勬柟寮忔湁浠ヤ笅鍑犵锛1銆佸嚱鏁版枃浠+璋冪敤鍑芥暟鏂囦欢锛氬畾涔夊涓狹鏂囦欢銆傝皟鐢ㄥ嚱鏁版枃浠:myfile.m clear clc for x=1:10 y=mylfg(x);end 鑷畾涔夊嚱鏁版枃浠: mylfg.m function y=mylfg(x) %娉ㄦ剰锛氬嚱鏁板悕锛坢ylfg锛夊繀椤讳笌鏂囦欢鍚嶏紙mylfg.m锛変竴鑷 Y=3*x+1;娉細杩欑鏂规硶瑕佹眰鑷畾涔夊嚱鏁板繀椤...
  • matlab涓濡備綍鍐涓涓嚱鏁鏉ヨ绠楁柟绋嬪紡y=0.5exp(x/3)-x*x* sin(x...
    绛旓細1. 棣栧厛锛屽湪MATLAB涓鍒涘缓涓涓柊鐨.m鏂囦欢銆備綘鍙互浣跨敤浠讳綍鏂囨湰缂栬緫鍣ㄦ潵鍒涘缓姝ゆ枃浠讹紝浣嗛氬父鎴戜滑浼氬湪MATLAB鐨勫懡浠ょ獥鍙d腑鐩存帴鍒涘缓銆2. 鍦ㄨ繖涓.m鏂囦欢涓紝浣犲彲浠瀹氫箟涓涓嚱鏁銆傚嚱鏁扮殑瀹氫箟闇瑕佷互"function"寮濮嬶紝鍚庨潰绱ц窡鐫鍑芥暟鐨勮緭鍑哄彉閲忓拰杈撳叆鍙橀噺銆備緥濡傦紝濡傛灉浣犵殑鍑芥暟鍚嶆槸`calculate_y`锛岄偅涔堜綘鐨鍑芥暟瀹氫箟...
  • MATLAB涓濡備綍浣跨敤鐢ㄦ埛鑷瀹氫箟鍑芥暟?
    绛旓細鐢ㄦ埛鑷瀹氫箟鐨鍑芥暟闇瑕佹斁鍦╬ath璺緞涓嬶紝鎴栬呭綋鍓嶆枃浠跺す涓嬨
  • matlab鎬庝箞寤虹珛鑷瀹氫箟鍑芥暟
    绛旓細matlab鎬庝箞寤虹珛鑷瀹氫箟鍑芥暟 鏂板缓涓涓m鏂囦欢 鍦╩鏂囦欢閲岄潰绗竴琛岃緭鍏unction [X,Y]=pll(X1,Y1,X2,Y2)锛岃繖閲寈1 x2 y1 y2鏄綘鍑芥暟鐨勮緭鍏ュ硷紝 x y鏄緭鍑哄硷紝鎺ョ潃瀹氫箟浣犺瀹炵幇鐨勫姛鑳斤紝姣斿锛歺 = x1 + x2; y = y1 + y2; 鎺ョ潃淇濆瓨杩欎釜m鏂囦欢锛屾敞鎰忥紒锛 杩欎釜m鏂囦欢鐨勫悕瀛楀繀椤绘槸瀹氫箟鐨...
  • 扩展阅读:θ怎么用键盘打出来 ... 怎么在matlab中定义ut ... e在matlab中的表示 ... matlab怎么创建一个矩阵 ... matlab定义m行n列矩阵 ... matlab中的数字含有e ... matlab中aim函数怎么定义 ... matlab尝试作为函数执行 ... matlab中怎样定义一个变量 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网