搜索内容 搜索用户

# 5 麦片

050

1主题 0最佳答案 发表于 2020-11-17 15:10:26 | 显示全部楼层 |阅读模式
 我通过有限元分析得到了平面上一个区域的应力云图，已知该平面区域内各个节点的应力值和节点对应的二维坐标，怎样用MATLAB计算此区域内的面积加权平均值？ 有没有人做过类似的计算，求代码......

# 5 麦片

050

1主题 0最佳答案 楼主| 发表于 2020-11-17 19:49:53 | 显示全部楼层
 因为网格是不均匀的，所以所求区域内的平均应力不是算术平均值，而是需要给各个节点应力附加一个面积权重，有做过类似计算的大佬吗？

# 论坛优秀回答者

26主题 161最佳答案
• 关注者： 49 发表于 5 天前 | 显示全部楼层

# 5 麦片

050

1主题 0最佳答案 楼主| 发表于 5 天前 | 显示全部楼层
 caicaibi 发表于 2020-11-21 18:48 你这说的是不是二维卷积？ 可以这么理解，但在这个问题上没有那么理想的数学模型。我把我的实现方法贴在楼下吧。

# 5 麦片

050

1主题 0最佳答案 楼主| 发表于 5 天前 | 显示全部楼层
 input = xlsread('V_BL01.xlsx'); x = input(:,5); y = input(:,6); sigma = input(:,3); % epsilon = input(:,4); Num_nodes = length(x); Sum_weight = 0; Sum_sigma = 0; % Sum_epsilon = 0; for i = 1: Num_nodes     A=[];     B=[];     for j = 1:Num_nodes         distance2(j) = ( x(j)-x(i) )^2 + ( y(j)-y(i) )^2;     end     order1 = sort(distance2);     len1 = sqrt(order1(2));       for j = 1:Num_nodes         if j-i==0             A = A;         else             if   abs(x(j)-x(i))<1/2000                  A = [A,abs(y(j)-y(i))];             else                  A = [A,0.05];             end         end     end         order2 = sort(A);         L1 = order2(1);     for j = 1:Num_nodes         if j-i==0             B = B;         else             if   abs(y(j)-y(i))<1/2000                  B = [B,abs(x(j)-x(i))];             else                  B = [B,0.05];             end         end     end         order3 = sort(B);         L2 = order3(1);     len3 = min(L1,L2);     Sum_weight = Sum_weight + len1*len3;     Sum_sigma = Sum_sigma + sigma(i)*len1*len3; %     Sum_epsilon = Sum_epsilon + epsilon(i)*len1*len3;     clear distance2     clear A     clear B     clear order1     clear order2     clear order3 end sigma_avrg = Sum_sigma/Sum_weight % epsilon_avrg = Sum_epsilon/Sum_weight

# 5 麦片

050

1主题 0最佳答案 楼主| 发表于 5 天前 | 显示全部楼层
 xlsgssss 发表于 2020-11-21 19:05 input = xlsread('V_BL01.xlsx'); x = input(:,5); y = input(:,6); 由于网格是四边形的，每一个节点有四个相邻点，取此点与其余各点距离的最小值a为权重矩形的短边，再取与该点在同一横线或竖线上的点，求距离并取最小值b，即为权重矩形的长边，权重矩形的面积S=a*b，如此嵌套两层循环即可求得面积权重应力（应变）均值。当然，这是个简化的算法，所谓的“权重矩形”实际并不存在，只是代替节点周围的面积大小而已，也就是量化某一节点周围的稀疏程度，得到的加权均值精度不是特别高。

 本版积分规则 回帖后跳转到最后一页