声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2108|回复: 4

[编程技巧] 对离散数据进行插值然后进行二重数值积分出错

[复制链接]
发表于 2007-7-16 13:11 | 显示全部楼层 |阅读模式

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

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

x
对于二维离散数据,怎么积分好呢?我是先数据关于这两维分别进行插值,然后用dblquad进行积分,结果出现了错误,请帮忙指正一下,谢谢!
dblquad(@f_dy,0,pi,0,2*pi,1.e-6,@quadl);

function y=f_dy(theta_in,phi_in)
if theta_in <= pi/2
fid=fopen('c:/2.txt');                         % 2.txt是存储数据的文件
[a,count]=fscanf(fid,'%f%f',[37,inf]);  
fclose(fid);
a=a.';
ff=10.^((a-max(max(a)))/20);
l=length(ff(:,1));
for i=1:l
    theta1(i,1)=(i-1).*2; %theta向2度的间隔
end
for i=1:37
    f_phi(1,i)=interp1(theta1,ff(:,i),theta_in);
    phi1(1,i)=(i-1).*10;%phi向10度间隔
end
y=interp1(phi1,f_phi,phi_in);             %通过插值可以求得任意theta_in和phi_in时的值
else
    y=0;
end
运行出现错误
??? Subscripted assignment dimension mismatch.
Error in ==> f_dy at 17
    f_phi(1,i)=interp1(theta1,ff(:,i),theta_in);

[ 本帖最后由 eight 于 2007-7-16 13:14 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-7-16 13:14 | 显示全部楼层
原帖由 jojocleo 于 2007-7-16 13:11 发表
对于二维离散数据,怎么积分好呢?我是先数据关于这两维分别进行插值,然后用dblquad进行积分,结果出现了错误,请帮忙指正一下,谢谢!
dblquad(@f_dy,0,pi,0,2*pi,1.e-6,@quadl);

function y=f_dy(theta_in,phi ...



看置顶贴,查找“常见错误”一贴,然后自己调试
 楼主| 发表于 2007-7-16 13:35 | 显示全部楼层
不好意思,我刚才察看了一下常见错误http://forum.vibunion.com/forum/thread-46001-1-1.html,没有这种错误,能提示一下吗?谢谢了..
发表于 2007-7-16 14:23 | 显示全部楼层
原帖由 jojocleo 于 2007-7-16 13:35 发表
不好意思,我刚才察看了一下常见错误http://www.chinavib.com/forum/thread-46001-1-1.html,没有这种错误,能提示一下吗?谢谢了..


错误虽没有,但是可以类推一下,反正原则就一条:就是只能自己调试
 楼主| 发表于 2007-7-16 14:47 | 显示全部楼层
这个我知道,我只是想知道下你碰到过这种情况吗?这样做可行吗?dblquad能这样用吗?我是对这个命令不是很熟悉来咨询一下要是不可行就换方法了,谢谢!!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-24 04:13 , Processed in 0.053981 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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