声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1902|回复: 4

[编程技巧] strcat函数求积分

[复制链接]
发表于 2008-12-5 19:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我想求解y=sin(kx)*x^2+m的积分,x,y是变量,mk是参数,参考了例子,但是仍然不知道该怎样写出来,请帮帮忙
pp=[2,3,4]
k=[1,2,3]
m=[0,1,2]
for i=1:length(k)
    for j=1:3
    fun=strcat('sin(',num2str(k(i)),'*x).*x.^2+num2str(m(j))');%%有问题
    y(i,j)=quadl(inline(fun),1,pp(i))
end

end

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2008-12-6 11:36 | 显示全部楼层
没看出来跟strcat有什么必然联系。
将下面的代码保存为独立M函数:
  1. function y=MainFuncForQuadl(x,p1,p2)
  2. y=sin(p2*x).*x.^2+p1;
复制代码
在command windows中运行如下代码,或者新开一个M文件,将其保存成一个cell单元,然后按ctrl+enter:
  1. %% 测试积分函数的循环
  2. pp=[2,3,4];
  3. k=[1,2,3];
  4. m=[0,1,2];
  5. for i=1:3
  6.     IntResults(i)=quadl(@MainFuncForQuadl,1,pp(i),[],[],m(i),k(i));
  7. end
  8. disp('积分结果如下:')
  9. IntResults
复制代码
计算结果:
  1. 积分结果如下:
  2. IntResults =
  3.     2.2462   -3.0585    0.7970
复制代码
补充两句:这种含参数的积分、微分方程、非线性优化函数,只要是含有function handle的,都可以用上述方法调用,另外现在MATLAB也提供了很多种思路求解此类问题,而且更加简洁,例如nested function、arrayfun等等,不过这些方式某人比较熟悉,我就不献丑了。:victory:

[ 本帖最后由 bainhome 于 2008-12-6 11:40 编辑 ]

评分

1

查看全部评分

发表于 2008-12-6 15:04 | 显示全部楼层
不过这些方式某人比较熟悉,我就不献丑了。:victory:


谁啊?
发表于 2008-12-6 16:53 | 显示全部楼层
"将其保存成一个cell单元,然后按ctrl+enter", 什麽意思?
v6.5之前版本有此功能吗?
发表于 2008-12-6 17:30 | 显示全部楼层
6.5很长时间没用过,印象不深了,但是如果随便开一个M文件,把我那段最前面带两个"%"的代码拷贝进去,单击代码中任何一处,如果没有整段代码出现淡黄色的底色,那恐怕这种代码cell的方式就属于6.5不具备的功能了。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-12 01:10 , Processed in 0.080244 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表