matlab函数赋值如何实现?

我具体的问题是:如果我有好几个函数表达式,f1(a,b,c,d,e),f2(a,b,c,d,e),f3(a,b,c,d,e).三个式子中均含有a,b,c,d,e,变量。我想给每一个函数里面的A-E赋相同的值,该怎么做啊?谢谢大家了!

在Matlab7.0以后的版本中,出现了一种新的函数类型–匿名函数,不但能够完成原来版本中内联函数(inline)的功能,还提供了其他更方便的功能。Matlab首席科学家Moler教授都推荐用匿名函数替代原来的内联函数。我最近学习了一些有关匿名函数的内容,现在总结一下:
1,匿名函数的基本用法。

handle = @(arglist)anonymous_function

其中handle为调用匿名函数时使用的名字。arglist为匿名函数的输入参数,可以是一个,也可以是多个,用逗号分隔。anonymous_function为匿名函数的表达式。举个例子如下:
>> f=@(x,y)x^2+y^2; >> f(1,2) ans = 5

当然输入的是数组也是可以的:
>> f=@(x,y)x.^2+y.^2; %注意需要点(.)运算 >> a=1:1:10; >> b=10:-1:1; >> f(a,b) ans = 101 85 73 65 61 61 65 73 85 101

匿名函数的表达式中也可以有参数的传递,比如:
>> a=1:5; >> b=5:-1:1; >> c=0.1:0.1:0.5; >> f=@(x,y)x.^2+y.^2+c; >> f(a,b) ans = 26.1000 20.2000 18.3000 20.4000 26.5000

c作为表达式中的参数,进行了数据传递。上面都是单重匿名函数,也可以构造多重匿名函数,如:
>> f=@(x,y)@(a) x^2+y^+a; >> f1=f(2,3) f1 = @(a)x^2+y^+a >> f2=f1(4) f2 = 85

每个@后的参数从它后面开始起作用,一直到表达式的最后。
2.使用匿名函数实现符号函数的赋值运算
在老版本的Matlab中,这个功能是由inline函数完成的,现在用匿名函数完成此功能。比如:知道z=2x^3+4x+5,求z在x=3处的2阶导数值。可以先用符号函数算出z的2阶导数的表达式,然后通过匿名函数,把x赋予3的值,得到最后结果:
>> syms x; %定义符号变量 >> z=2*x^3+4*x+5; %定义表达式 >> z1=diff(z,2) %求z的2阶导数的表达式 z1 = 12*x >> z2=eval_r(['@(x)' vectorize(z1)]); %vectorize函数的功能是使内联函 %数适合数组运算的法则 >> z2(3) ans = 36
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-22
定义全局变量就可以的,你可以在命令窗口中先分别定义
如:a=2, b=5,c=7,d=11,e=12;
x=[a b c d e];
f=f(x)
回车就OK啦
再如:a=30;b=45;c=60;
x=[a b c];
f=sin(x/180*pi)
用matlab运行一下看看你做到了没!!追问

是在最开始的时候定义 global a b c d e;吗?在运算过程中我既需要进行符号运算,最后又要对其赋值,该怎么弄呢?还有,f1,f2,f3 若干个式子中均含有a,b,c,d,e ,那该怎么弄呢?麻烦您详细些,我是从零开始自学的。。。谢谢了,!

追答

你这个是数值运算还是符号计算呢,要是符号计算就要用syms声明变量
下面牵涉求值时再用numeric(符号表达式)或double(sym('s'))求值
可以的话,你把原题发上来,我们共同讨论!!

追问

我是先需要求导数,在对其赋值、作图,能加你的QQ吗?358265607

追答

1436038858

本回答被提问者采纳

MATLAB输入一个函数,比如y=x²,怎么给y赋值求出x
按照下列步骤,可以实现给y赋值求出x的功能。1、建立自定义函数文件并保存在当前文件目录下,文件名为myfun.m function x= myfun(y)x=sqrt(y);end 2、在当前文件目录下,命令窗口输入 >> y=10;x=myfun(y)x = 3.1623 >> y=16;x=myfun(y)x = 4 追问 那要是用subs呢 还有这个y...

matlab数组赋值
3. 循环赋值:通过循环结构,根据特定条件对数组元素进行赋值。例如,使用`for`循环对数组元素循环赋值。4. 使用内置函数:MATLAB 提供多种函数帮助进行数组操作和赋值,如`ones`、`zeros`、`rand`等。5. 数组复制:使用`copy`或`copyobj`函数将一个数组复制到另一个数组。下面是一个示例,展示如何在...

matlab函数赋值如何实现?
2.使用匿名函数实现符号函数的赋值运算 在老版本的Matlab中,这个功能是由inline函数完成的,现在用匿名函数完成此功能。比如:知道z=2x^3+4x+5,求z在x=3处的2阶导数值。可以先用符号函数算出z的2阶导数的表达式,然后通过匿名函数,把x赋予3的值,得到最后结果:>> syms x; %定义符号变量 >> ...

如何实现matlab函数参数赋值?
将c d e f的取值写成矩阵,再使用循环语句。

MATLAB被调用函数的变量赋值
问题已解决。设全局变量后,在用到变量的函数中还需要再定义一下,就可以了。

跪求:如何实现matlab函数参数赋值
如果是7以上版本的话可以这样 myfun2=@(t)myfun(2,3,t);否则的话就老老实实再写一个m-file就可以了 function y=myfun2(t)y=myfun(2,3,t);___normcdf不是要3个参数吗,没明白你什么意思。能不能再说清楚一点?

matlab矩阵元素如何用函数赋值
大部分的 matlab 函数是向量化的,那么只需:x = 0:0.01:0.83;M = f(x);如果不行的话,那就只能:M = arrayfun(@f, x);arrayfun 按 x 的值一个一个的调用 f(x),相当于 M(i) = f(x(i))。这要比第一种方法慢很多倍,所以任何时候都应该首选第一种方法尝试。

Matlab中,一个行向量怎么赋值给矩阵的一行啊!
1、可以通过zeros函数进行赋值,输入a=zeros(2,3),生成了一个全0矩阵,如下图所示:2、可以直接使用a(1,3)=5方式进行矩阵赋值,a矩阵第1行第3列赋值成5了,如下图所示:3、使用 a(3)=8方式进行赋值,矩阵第3个元素赋值为8,从列开始往下数,如下图所示:4、使用a(1,:)=[1 1 1]方式...

matlab中,用户自行建立的函数如何赋值的问题
if length(x)==length(x_value)for i=1:length(x)eval([x(i) '=' num2str(x_value(i))]);end end 这样可以把x和x_value联系起来,如果有不懂可以追问

matlab如何将函数自变量赋值成矩阵的某一行?
你好!如果只是为了得到a矩阵第一列与第二列相加的结果,可以很方便的实现:a=[1 2;3 4];Z=a(:,1)+a(:,2);如果,一定要按照你的意思,先把x,y定义为符号变量,再赋值计算,syms x y也起不到做作用,matlab不需要定义。a=[1 2;3 4];x=a(:,1);y=a(:,2);z=x+y;如果你要...

相似回答