对于3D空间中100k个坐标点及其上面数据值使用matlab进行数值积分, 有没有成熟的程序段哪? 我一直没有找到. 自己采用类似复化梯形法划分坐标网格,对网格内数据求平均计算可以较快解决, 但是精度很低. 如果采用插值, 用interp3, 又会对3维矩阵的大小产生限制, 无法引入足够多的原始数据点, 精度依然无法提高. 对于采用单元内平均值的方法,用一维验证,类似于梯形法,积分sin(x)在-pi到pi之间,结果在0.01和0.001之间,很难说趋近于0.  第三种我采用的办法是划分坐标网格(其实我的模型是柱体)后,对每个单元单元内部点上的数据拟合出 f=a0+a1*x+a2*y+a3*z 在每个单元内求积分解析解,然后对全部单元求和, 这样仍然大量消耗内存. (刚刚经过每次将近一个小时的运算, 发现随着剖分单元增加, 积分结果并不收敛,附上程序草稿)

请教大家有没有什么好办法. 急!!!!!!!!!!! 感谢.

各位如果有时间, 也可以帮忙回答到这个邮箱里面 yaoyuanzhao@gmail.com不胜感激.

[code]

clear

load data_1s(E)R13

tic

total_number=474382;  % total data point number

%%%%%%%% extract %%%%%%%%%%%%%

% with import data structure coord_s=(x,y,z),data_s=(d),coord_p=(x,y,z),data_p=(d) for s and p-state with same size

extract=60;   % extract one data point from each point group with point number=extract

for ii=1:(floor(length(coord)/extract))

coord_new_s(ii,1:3)=coord(1+(ii-1)*extract,1:3);

data_new_s(ii)=data(1+(ii-1)*extract);

end

x1=coord_new_s(:,1); y1=coord_new_s(:,2); z1=coord_new_s(:,3); d1=data_new_s;

clear coord_new_s data_new_s coord_new_p data_new_p

%%%%%%%%%%%%%%% find the data points in each mesh element

nx= 40  ;  %element number along x-axis

ny= 10  ;  %element number along y-axis

nz= 35  ;  %element number along z-axis

step_x=(max(x1)-min(x1))/nx   ;  % set the scale of each rectangular element

step_y=(max(y1)-min(y1))/ny   ;

step_z=(max(z1)-min(z1))/nz   ;

for i=1:nx

for j=1:ny

for k=1:nz

disp([i,j,k])

search=find(((x1>=(min(x1)+(i-1)*step_x))&(x1=(min(y1)+(j-1)*step_y))&(y1=(min(z1)+(k-1)*step_z))&(z1

element{i,j,k}=search;     % store the index of search result into a cell array

element_center=[(min(x1)+(i-1/2)*step_x),(min(y1)+(j-1/2)*step_y),(min(z1)+(k-1)*step_z)];

record_search1{i,j,k}=search;

kk=1;

while (length(search)<4)

kk=kk+1;

search=find((abs(x1-element_center(1))

if (kk==ceil((extract)^(1/3)))&(length(search)==0)   % for empty element far from the near pts, set the up limit

b=[0,0,0,0];

break

end

end

record_search2{i,j,k}=search;  % record for test

while (length(search)>20)

pick=(1:floor(length(search)/2)).*2; % shrink # of search to 1/2

search=search(pick);

end

clear pick element_center

if (length(search)>=4) %  & length(search)<10)

if length(find(d1(search)==0))==length(search)

b=[0;0;0;0];

else

x_1=x1(search); y_1=y1(search); z_1=z1(search);

n=[ones(length(search),1),x_1,y_1,z_1];

[b,bint,r,rint,s]=regress(d1(search)',n);

clear n x_1 y_1 z_1

end

end

if length(find(b==0))==4

Q(i,j,k)=0;

else

fun=strcat(num2str(b(1)),'+',num2str(b(2)),'*x+',num2str(b(3)),'*y+',num2str(b(4)),'*z'); % modified 08.11.03

Q(i,j,k)=triplequad(inline(fun),min(x1)+(i-1)*step_x,min(x1)+i*step_x,min(y1)+(j-1)*step_y,min(y1)+j*step_y,min(z1)+(k-1)*step_z,min(z1)+k*step_z);

end

end

end

end

int=sum(reshape(Q,1,[]))

time=toc

matlab对三维面求积分,matlab三维数值积分问题相关推荐

  1. matlab已知点求二维和三维中两直线夹角

    链接:http://blog.sina.com.cn/s/blog_994de1530101em5u.html (1)二维:theta=acosd(dot([x1-x2,y1-y2],[x3-x4,y ...

  2. matlab近似计算求积分,matlab 实验二 定积分的近似计算

    实验二定积分的近似计算 利用牛顿-莱布尼兹公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函数能用初等函数表达出来的情形.如果这点办不到或者不容易办到,这就有必要考虑近似计算的方法.在定积分 ...

  3. 高斯勒让德求积公式matlab通用程序,数值分析——Gauss-Legendre 求积分(Matlab实现)...

    2020 4.4 题目:编写Gauss求积法计算积分的程序(Gauss点数取1,2,3,4,5即可)并用于计算积分 ∫10sinxxdx∫01sin⁡xxdx\int_{0}^{1} \frac{\s ...

  4. 数值分析——Gauss-Legendre 求积分(Matlab实现)

    2020 4.4 题目:编写Gauss求积法计算积分的程序(Gauss点数取1,2,3,4,5即可)并用于计算积分 ∫01sin⁡xxdx\int_{0}^{1} \frac{\sin x}{x} d ...

  5. matlab 使用 int函数 求积分

    求函数 f(x)=x2f(x) = x^2f(x)=x2 在 [1, 2] 区间的积分 syms x y; % 定义符号 f(x)=x^2; % 定义被积函数 k=int(f,x,1,2); % 求函 ...

  6. matlab for求积分,MATLAB数值分析之数值积分(一)

    [实验原理] 一.复合辛普森方法 1)复合辛普森方法基本思路 把积分区间分成若干子区间,再在每个子区间上用低阶辛普森求积公式. 2)复合辛普森算法描述 二.龙贝格方法 1)基本思路 实质上是梯形公式的 ...

  7. 【Matlab】Romberg求积公式求积分

    1 题目 用Romberg求积法计算积分∫−1111+100x2dx\int_{-1}^{1} \frac{1}{1+100 x^{2}} d x∫−11​1+100x21​dx的近似值,要求误差不超 ...

  8. matlab for求积分,matlab计算定积分的方法—————

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1计算函数zx+e*(cosy +xsiny)的偏导数. 2计算函数f(x,y)= In(1+x^2+y^2)在点(2.4)的全微分 3.设z=xe^xy ...

  9. matlab分支与循环求函数,Matlab变量、分支语句和循环语句

    一.Matlab的变量 1.变量的命名 Matlab的变量名由数字.字母和下划线组成,但是只能由字母开头.大小写敏感,最大长度为63个字符,不能使用Matlab的关键字作为变量名,应当避免使用函数名作 ...

最新文章

  1. 【我翻译的文章】你还需要数据层吗?
  2. 分布式事务之消息补偿解决方案
  3. 前端JS调用微信扫一扫二维码
  4. PostgreSQL字符集问题
  5. 实战:配置DNS客户端域名搜索后缀构造域名进行域名解析
  6. CSS大会 | 打破常“规”:挖掘语法解析器规则漏洞
  7. 程序员须知:必须建立个人知识库,它的重要性你需要了解一下!
  8. @Controller @ResponseBody @RestController的基本含义与使用方法
  9. mpeg4的解码演示程序
  10. WOFF2与icon字体化
  11. 深富策略:指数横盘震荡整理 汽车整车表现亮眼
  12. python爬取拉钩网招聘信息
  13. 【老生谈算法】matlab实现模糊K-均值算法——均值算法
  14. java计算机毕业设计吉他库存管理源码+mysql数据库+系统+lw文档+部署
  15. 前端——Form表单
  16. 百度地图注册:申请百度地图秘钥
  17. 【期望,方差,象,核】
  18. 直面中国市场的新挑战,律商风险数据赋能车险智慧决策踏上新征程
  19. 如何修复Windows 10中的声音问题
  20. 产品读书.心理学《墨菲定律》

热门文章

  1. Kubernetes高可用性监控:Thanos的部署
  2. 「react进阶」一文吃透React高阶组件(HOC)
  3. 使用u盘安装Fedora14
  4. 计算机的应用与分类,办公自动化是计算机的一项应用,按计算机应用的分类,它属于(    )...
  5. win10安装wsl 2.0子系统 安装在非C盘
  6. 新电脑安装python环境
  7. 深度剖析数据在内存中的存储(修炼内功~吊打面试官)
  8. uni-app 父组件无法获取到子组件传来的值,为undefined;父子组件传值undefined
  9. 中国文章剽窃严重 —— 腾讯有暗中保护盗版的嫌疑!
  10. 使用腾讯IP查询-判断IP归属地-Vic's blog