matlab函数赋值如何实现?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
参考技术A 定义全局变量就可以的,你可以在命令窗口中先分别定义
如: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 如何用插值给NAN赋值

我现在有个360*180的二维矩阵,然后里面有一些NAN值。这些NAN值不能去掉也不能改成0,因为会影响最后的结果,所以我想用插值的方法给NAN赋值。请问这个程序怎么编呐?谢谢!

参考技术A 第一列到倒数第二列都是nan,之后最后一列有值
那么其他值以什么标准来填新值呢?
哪怕多知道第一列的值,中间的还可以根据一前一后两个值插值计算得出
如果有足够的数据,至少第一点和最后一点知道,还是可以通过interp1插值填充的
只是要处理一下避开nan点
假设你原来数据是a
使用find(isnan(a))可以返回所有数据中是nan的值的位置
可以根据其填充新值

以上是关于matlab函数赋值如何实现?的主要内容,如果未能解决你的问题,请参考以下文章

matlab 如何保留变量值

matlab 如何用插值给NAN赋值

matlab中如何看函数结构体中的数据

matlab如何定义数组函数,

matlab如何创建多维数组

matlab数组中如何找某个值的坐标