qq_41397721 2024-04-09 15:24 采纳率: 0%
浏览 10

关于matlab求离散点重叠面积及解相应方程

关于matlab求离散点重叠面积及解相应方程

图中棕色部分是poly1与poly2的重叠面积,poly1是离散点的面积,poly2是y=p与x轴的矩形面积,重叠部分面积用polyshape函数求解得到polyout1.area,求解当改变p值时,'polyout1.area=2p'方程p的解,因为重叠面积和p变量有关,解方程不能直接用'polyout1.area'来算,求】指点一下(p值代码里设置了4400),%%后面的部分是行不通的代码

img

clear all
clc
filename = 'C:\Users\64117\Desktop\测试.xlsx';
sheet1 = 1;
sheet2 = 2;
z = xlsread(filename,sheet2,'B10:B11');
a = xlsread(filename,sheet1);
i = numel(a(:,1))
c(:,1) = repmat(4400,[1 i]);
xl = xlsread(filename,sheet2,'B1');
cl = xlsread(filename,sheet2,'B2:B9');
for j=1:1:i
    if a(j,1)==cl(1);
        m=j;
    elseif a(j,1)==cl(2);
        n=j;
    end
end
a1 = [a(m:n,1)',a(n,1),a(m,1)];
b1 = [a(m:n,2)',0,0];
c1 = [c(m:n,1)',0,0];


%%问题部分 求p的值
syms p
d(:,1) = repmat(p,[1 i]);
d1 = [d(m:n,1)',0,0];
poly3 = polyshape(a1,b1);
plot(poly3)
poly4 = polyshape(a1,d1);
hold on
plot(poly4)
polyout2 = intersect(poly3,poly4);
eqns=(num2str(polyout2.area)==2*p)
p=solve(eqn,p)

  • 写回答

4条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-04-09 15:25
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题:如何用MATLAB求离散点重叠面积并解出相应方程中p的值? 回答: 求离散点重叠面积可以使用MATLAB中的polyshape函数和intersect函数。具体步骤如下:
    1. 读取数据文件并将数据存储在变量中: filename = 'C:\Users\64117\Desktop\测试.xlsx'; sheet1 = 1; sheet2 = 2; z = xlsread(filename,sheet2,'B10:B11'); a = xlsread(filename,sheet1); i = numel(a(:,1)); c(:,1) = repmat(4400,[1 i]); xl = xlsread(filename,sheet2,'B1'); cl = xlsread(filename,sheet2,'B2:B9');
    2. 根据数据文件,找到离散点所在的区间: for j=1:1:i if a(j,1)==cl(1); m=j; elseif a(j,1)==cl(2); n=j; end end a1 = [a(m:n,1)',a(n,1),a(m,1)]; b1 = [a(m:n,2)',0,0]; c1 = [c(m:n,1)',0,0]; d1 = [d(m:n,1)',0,0];
    3. 使用polyshape函数创建离散点的面积和矩形面积: poly1 = polyshape(a1,b1); poly2 = polyshape(c1,d1);
    4. 使用intersect函数找到重叠面积,并计算其面积大小: polyout1 = intersect(poly1, poly2); area = polyout1.area;
    5. 解出方程中的未知量p: syms p eqn = area == 2p; solve(eqn, p) 解出的p值即为方程的解。在代码中,设置了p值为4400,如果需要改变p的值,只需要更改c(:,1) = repmat(4400,[1 i])中的4400即可。 完整代码示例: filename = 'C:\Users\64117\Desktop\测试.xlsx'; sheet1 = 1; sheet2 = 2; z = xlsread(filename,sheet2,'B10:B11'); a = xlsread(filename,sheet1); i = numel(a(:,1)); c(:,1) = repmat(4400,[1 i]); xl = xlsread(filename,sheet2,'B1'); cl = xlsread(filename,sheet2,'B2:B9'); for j=1:1:i if a(j,1)==cl(1); m=j; elseif a(j,1)==cl(2); n=j; end end a1 = [a(m:n,1)',a(n,1),a(m,1)]; b1 = [a(m:n,2)',0,0]; c1 = [c(m:n,1)',0,0]; d1 = [d(m:n,1)',0,0]; poly1 = polyshape(a1,b1); poly2 = polyshape(c1,d1); polyout1 = intersect(poly1, poly2); area = polyout1.area; syms p eqn = area == 2p; solve(eqn, p)
    评论

报告相同问题?

问题事件

  • 创建了问题 4月9日