matlab中如何定义连续抽象函数专题?

Matlab中函数定义的问题,如何解决?
Matlab中的很多函数都有多种调用方式 采用哪种调用方式是根据所传递的参数决定 我隐约记得,自定义函数也可以实现这种功能 想请问具体如何实现,谢谢
09-02-26 & 发布
Matlab中的程序有以下三种类型,现举例如下:(1)f=@(x)x^2+x+1(2)f=2*x^3-x^2+1或f=inline('2*x^3-x^2+1')(3)建立M文件function f=fun(x)f=x^2-2*x+1对于你的问题,有多种解决方法,现举一例(是我认为最好的解决办法)(1)建立M文件,在其中输入如下内容:function f=fun(x,i)%x,i均位向量。f=zeros(length(i),length(x));%预分配变量空间for k=1:length(i)   f(k,:)=x.^i   %相当于建立一个含有两个变量的函数。end在调用时,如果你需要计算x=[1:10];i=1:2;时f的函数值。可以在MATLAB命令窗口中输入如下命令:x=[1:5];i=1:2;f=fun(x,i)运行所得结果为:f=1 2 3 4 51 4 9 16 25当然,此时,若只需求某一个数的某个次方也行。例如:要求6^3,在MATLAB命令窗口中输入y=fun(4,3)得到结果为y=   64其他,依次类推。
请登录后再发表评论!
方程中出现点,如a(x1,y1),如何在函数方程中使用?
请登录后再发表评论!急!!!在matlab中如何定义一个一维的离散的函数 要求定义域和值域以自己输入_百度知道
急!!!在matlab中如何定义一个一维的离散的函数 要求定义域和值域以自己输入
提问者采纳
function [fu] = f(a)a=input(&#39;请输入自变量值定义区间【0<img class="word-replace" src="/api/getdecpic?picenc=0ad<img class="word-replace" src="/api/getdecpic?picenc=0ad<img class="word-replace" src="/api/getdecpic?picenc=0ad<img class="word-replace" src="/api/getdecpic?picenc=0ad<img class="word-replace" src="/api/getdecpic?picenc=0ad】);if(a&5)fu =elseif(5&a&9)fu =else fu =c;endif
提问者评价
其他类似问题
值域的相关知识
其他1条回答
x=input(&#39;请输入定义域例输入[1,2,3,4,5] :&#39; );y=input(&#39;请输入值域例输入[11,12,13,14,15] :&#39; );
设U={0,2,4,6,8,10},V={a,b,c,d}; 又设f:U-&V, 且:当x=0,2,4时,f(u)=a; 当x=6,8时,f(u)=b; 当x=10时,f(u)=c; 请问上述离散的一个函数用matlab怎么写?谢谢哦
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁本文欢迎转载,转载请注明:转载自中国学网: []
用户还关注
可能有帮助[整理]Matlab中函数定义方法
Matlab中函数定义方法
Matlab自定义函数的六种方法
n1、函数文件+调用函数(命令)文件:需单独定义一个自定义函数的M文件;
n2、函数文件+子函数:定义一个具有多个自定义函数的M文件;
n3、Inline:无需M文件,直接定义;
n4、匿名函数;
n5、Syms+subs:无需M文件,直接定义;
n6、字符串+subs:无需M文件,直接定义。
------------
1、函数文件+调用函数文件:定义多个M文件
%&调用函数文件:myfile.m
y=mylfg(t);
fprintf(‘M^(1/3)=%6.4f\n’,t,y);
%自定义函数文件:
function y=mylfg(x) %注意:函数名(mylfg)必须与文件名(mylfg.m)一致
Y=x^(1/3);
注:这种方法要求自定义函数必须单独写一个M文件,不能与调用的命令文件写在同一个M文件中。
2、函数文件+子函数:定义一个具有多个子函数的M文件
%命令文件:funtry2.m
[]=funtry2()
fprintf(‘M^(1/3)=%6.4f\n’);
%注:自定义函数文件funtry2.m中可以定义多个子函数function。子函数lfg2只能被主函数和主函数中的其他子函数调用。
注意:函数定义格式
在matlab中应该做成M文件,文件名要和你文件里的function后面的函数名一致,在File新建一个M-file在M-file里编辑函数,其格式为:
function [输出实参表]=函数名(输入实参数)
&&&&&注释部分
&&&&&&函数体语句
&&&&&&return语句(可以有可以没有)
如果是文件中的子函数,则可以任意取名,也可以在同一个文件中定义多个子函数:
&&例:&function [max,min]=mymainfun(x)&&&&&&%主函数
&&&&&&&&&&&&&&&&n=length(x);
&&&&&&max=mysubfun1(x,n);&
&&&&&&&min=mysubfun2(x);
&&&&&&function r=mysubfun1(x,n)&&&&&&&&&&&&%子函数1
&&&&&&&&&&&&&&&x1=sort(x);
&&&&&&&&&&&&&&&&r=x1(n);
&&&&&function r=mysubfun2(x)&&&&&&&&&&&&&&%子函数2
&&&&&&&&&&&&&&&x1=sort(x);
&&&&&&&&&&&&&&&&r=x1(1);
详细见后文:matlab中同一文件定义子函数的方法
【说明】可以将一个主函数和多个子函数写在一个m文件中,文件名是主函数名,第一个函数是主函数,后面跟的函数都是这个函数中需要调用的子函数或者子子函数。即该文件必须是以function打头的函数文件,不能是前面不是函数,后面跟一串函数。强调一下,前面是命令后面加函数是不行的,必须前面也是函数!前面无参数输入的而是一段命令,直接将这些命令定义为一个无参数的函数就可以了。
3、Inline:无需M文件,直接定义
%inline命令用来定义一个内联函数:f=inline(‘函数表达式’,&‘变量1’,’变量2’,……)。
调用方式:y=f(数值列表)
%注意:代入的数值列表顺序应与inline()定义的变量名顺序一致。
f=inline(‘x^2+y’,’x’,’y’);
注:这种函数定义方式是将它作为一个内部函数调用。特点是,它是基于Matlab的数值运算内核的,所以它的运算速度较快,程序效率更高。缺点是,该方法只能对数值进行代入,不支持符号代入,且对定义后的函数不能进行求导等符号运算。
f=’x^2’;
h=inline(‘x^2’,’x’);
4.&匿名函数
使用matlab函数句柄操作符@,可以定义指向matlab内置函数和用户自定义函数的函数句柄,函数句柄也可以像函数一样的使用。例如:
&&x=-pi:0.1:
fh={@cos,@sin};
&&&&@cos&&&&@sin
&&plot(fh{2}(x))
5、Syms+subs:&无需M文件,直接定义
用syms定义一个符号表达式,用subs调用:
Syms f x %定义符号
f=1/(1+x^2); %定义符号表达式
subs(f,&‘x’,代替x的数值或符号)
注:对于在syms中已经定义过的符号变量,在subs中进行替代时,单引号可以省略。但是,如果在syms后又被重新定义为其他类型,则必须加单引号,否则不可替换。
这种函数定义方法的特点是,可以用符号进行替换
f=1/(1+x^2);
‘x’,’y^2’)
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’;
-------------------------------------------
详细:Matlab中同一文件定义子函数的方法
有时子函数可能很短,就几行,可能希望将多个函数定义放在同一个.m文件中,这里就存在一个子函数的定义问题。
在matlab中一个.m文件中可以有多个的子函数,但仅能有一个主函数,并且M文件名必须和主函数相同&
在一个m文件中通常有两种定义子函数的方法:
1.嵌套定义
function&mainFunc()
a&=&myfunc1();
function&myfunc1()
2.&非嵌套定义
function&mainFunc()
a&=&myfunc1();
function&myfunc1()
在第二种情况中,myfunc1和主函数就是两个独立的函数,和把它们写在两个独立的文件
中没有差别。变量名想怎么起怎么起,不会有任何冲突。
而第一种情况中,myfunc1会和主函数共享变量名。这种情况下,使用相同的变量名,如
果不是故意为之,就不合适了。
&对于嵌套函数,函数定义中的end必不可少。
下面是某个.m脚本文件(son_function.m文件)中的内容:
%-----------------------------------------------------------------------
son_function(
)&&&&&&&&%主函数必须位于最上方
%子函数举例
max1=find_max(1,2,3)
max2=find_max(7,3,9)
max=find_max(a,b,c)&&&&%子函数
(a&=b)&(a&=c)
&&&&max=a;
(b&=a)&(b&=c)
&&&&max=b;
&&&&max=c;
%-----------------------------------------------------------------------
M文件中将函数的调用直接写到m脚本文件中的情况是不允许的,必须也把调用写成函数的形式,或者将子函数都写成单独的m文件。
如将上程序中的第一行屏蔽掉,即
% function
son_function( )&
会出现下面的错误
definitions are not permitted at the prompt or in
---------------------------------
下面一段文字是摘自matlab帮助中的一段文字:end在function中的使用
marks the termination of an M-file function, although in most
cases, it is optional. end statements are required only in M-files
that employ one or more nested functions. Within such an M-file,
every function (including primary, nested, private, and
subfunctions) must be terminated with an end statement. You can
terminate any function type with end, but doing so is not required
unless the M-file contains a nested function
尽管大多数情况下,end在function的用法是可选的,但也可以用它标记一个M文件函数的结束。end语句仅在使用一个或多个嵌套函数的情况下才是要求的。在诸如此类嵌套函数的M-文件中,每一个函数(包括主调函数,嵌套函数,私有函数和子函数)必须以一个end语句来结束。可以使用end结束任一函数类型,但这样做除了M-文件包含一个嵌套函数其他情况并非必要的。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。matlab中如何定义一个数组为全局变量?_百度知道
matlab中如何定义一个数组为全局变量?
主函数和另一个m文件里的函数都要用这个数组,两个里边都写了global,但是还是出错,好像不偿矗稗匪织睹半色报姬能用一般的全局变量的那个方法,怎么办?ps 希望大虾回答问题时先运行一下,否则不仅浪费了大家的时间,您的答案也不会被采纳,您回答问题不就是为了解决问题,答案被采纳,得到财富值吗?不对又何必浪费大家的时间和精力呢?!
提问者采纳
在M文件中编入如下程序:
%matlab自动将a作为数组处理for i=1:5
a(i)=i;end这样就可以成功定义一个全局变量数组。测试:在command window输入:sin(a(1)*a(2)*pi)得到:ans = -2.这样应该说明定义成功了吧。
其他类似问题
按默认排序
其他1条回答
你这个问题问的,还ps。你连个具体代码,错误偿矗稗匪织睹半色报姬信息都没有,叫别人怎么给你解决?只能说global可以做到你的目的,没什么不可以,出错也是你用错了。没有错误信息,谁也帮不了你。
全局变量的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 matlab中定义虚数 的文章

 

随机推荐