24小时热门版块排行榜    

查看: 753  |  回复: 13
当前主题已经存档。

wang1234568089

金虫 (初入文坛)

[交流] 【求助】关于句柄函数的问题

请问一下如何生成一个含有句柄函数的矩阵?以及怎么样调出这个矩阵的句柄函数?

举一个例子:

1、

function y=f1(x,a)

T=[1 2 3];

y=[];

for i=1:Ty

y=[y T(i).*x*a];%目的是输出一个矩阵[x*a   2*x*a  3*x*a]把这个矩阵中的元素作为句柄函数输出

end

2、

下面还要编写一个函数将上述矩阵中的元素x*a   2*x*a  3*x*a分别在【0,1】 上对a求积分得到一个新的矩阵【0.5*x   x   1.5*x】     

3、

再编写一个矩阵将这个矩阵中的所有元素求和,这个我知道。               



关键在于

1、

第二步如何将第一步形成的矩阵中的元素进行编写来获得第二步中的那个矩阵。

[ Last edited by sunxiao on 2009-3-8 at 12:36 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fspdlh

金虫 (正式写手)

★ ★
sunxiao(金币+2,VIP+0):欢迎参与,加分鼓励 3-4 00:37
建议你看看kron这个函数
[x*a   2*x*a  3*x*a]可以写成
kron(a.*(1:3),x)
2楼2009-03-03 16:45:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wang1234568089

金虫 (初入文坛)

你说的那个函数可以在循环里面应用吗?因为我说的【1 2  3】等是举一个例子,我是要引用一个数组中的数。
另外那个函数能否在别的函数中把句柄函数引用出来?
另外,我是想知道关于句柄函数和矩阵的关系的一些知识,包括句柄函数能否形成矩阵,假如能形成矩阵的话怎么调用?

[ Last edited by wang1234568089 on 2009-3-5 at 13:24 ]
3楼2009-03-05 13:05:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fspdlh

金虫 (正式写手)

★ ★
coldwind042(金币+2,VIP+0):欢迎多指导!学习啦! 3-5 19:33
句柄函数我没搞过,不过我觉得你这问题不难,不用想那么多,另外,尽量不用循环,MATLAB是矩阵化的语言,用循环就大才小用了,速度会慢很多的
for i=1:Ty
y=[y T(i).*x*a];
end
以上语句等同于kron(T,x*a),用不着循环,且速度会快很多
4楼2009-03-05 18:40:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wang1234568089

金虫 (初入文坛)

如果不用循环的话,而且如你所说kron(T,x*a)能够形成我上面的矩阵,那么接下来怎么办呢?我想要把矩阵里面的元素调出来进行积分求解,那该怎么办呢?
5楼2009-03-09 16:19:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hitzhang

木虫 (正式写手)

★ ★
sunxiao(金币+2,VIP+0):谢谢参与,常来交流 3-10 23:53
>> syms y x a
>> y=x*a*[1 2 3]

y =

[   x*a, 2*x*a, 3*x*a]


>> Y=int(y,a,0,1)

Y =

[ 1/2*x,     x, 3/2*x]


>> YY=sum(Y)

YY =

3*x


>> YYY=subs(YY,x,2)

YYY =

     6

>>
6楼2009-03-10 22:41:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wang1234568089

金虫 (初入文坛)

关于YY这个函数,x是字符变量,我的最终目的是让3*x作为一个关于x的function ,然后利用遗传算法求解,楼上给出的是字符变量,不能用于遗传算法的function.
7楼2009-03-11 13:58:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hitzhang

木虫 (正式写手)

★ ★ ★
sunxiao(金币+3,VIP+0):谢谢参与,欢迎常来 3-12 11:07
>> syms y x a
>> y=x*a*[1 2 3]

y =

[   x*a, 2*x*a, 3*x*a]


>> Y=int(y,a,0,1)

Y =

[ 1/2*x,     x, 3/2*x]


>> f = inline(sum(Y))

f =

     Inline function:
     f(x) = 3.*x

>> f(1:3)

ans =

     3     6     9

>>
8楼2009-03-12 11:03:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wang1234568089

金虫 (初入文坛)

你看我下面的程序可以吗?

function y=ff(x,a)
T=[1 2 3];TG=[0.1 0.2 0.3];
Q=[];
H=[];
for i=1:length(T)
    Q=[Q x.*quad(@(a) a.*T(i),0,1)];
    H=[H (Q(i)-TG(i)).^2];
end
y=sum(H);
我把上面的这个函数程序带入遗传算法工具箱,能够完全进行求解。
但是当我把 Q=[Q x.*quad(@(a) a.*T(i),0,1)];这个语句换成 Q=[Q x.*quad(@(a) f(x,a),0,1)];就不可以了。当然f(x,a)是我自己编写的一个函数如下:
function y=f(x,a)
T=[1 2 3];
y=exp(x./a.*T(i).*exp(-a./T(i)));
请教楼上的怎么解决这个问题,谢谢了。

[ Last edited by wang1234568089 on 2009-3-14 at 13:42 ]
9楼2009-03-14 13:41:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hitzhang

木虫 (正式写手)

★ ★
sunxiao(金币+2,VIP+0):谢谢参与,欢迎常来 3-15 02:10
function y=f(x,a)
T=[1 2 3];
y=exp(x./a.*T(i).*exp(-a./T(i)));
你编的这个函数有问题,

你是这个意思吗?
function y=f(x,a)
T=[1 2 3];
y=sum(exp(x./a.*T.*exp(-a./T)));
10楼2009-03-14 17:18:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wang1234568089 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见