matlab相关提问

可以请问:在matlab中根据已知图形边界如何在边界上形成系列离散的点

参考GPT和自己的思路:在matlab中,你可以使用函数bwboundaries()来获取已知图形的边界,并将边界离散化为一系列的点。具体步骤如下:

  1. 读取图像并进行二值化处理。

    img = imread('your_image.png'); % 读取图片
    bw_img = im2bw(img); % 二值化处理
    
  2. 使用bwboundaries()函数获取边界并离散化。

    [B,L] = bwboundaries(bw_img, 'noholes'); % 获取边界
    for i=1:length(B)
     boundary = B{i};
     plot(boundary(:,2), boundary(:,1), 'g', 'LineWidth', 2) % 绘制离散的边界点
    end
    

    其中,L是边界的标签矩阵,B是一个存储边界点坐标的单元格数组。

绘制边界离散化后的点时,boundary是一个N行2列的矩阵,其中的每一行都是一个二维空间点的坐标,第一列是X坐标,第二列是Y坐标。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/749479
  • 这篇博客你也可以参考下:matlab错误处理
  • 这篇博客也不错, 你可以看下matlab错误处理
  • 除此之外, 这篇博客: matlab解决线性规划中的 matlab程序 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    f=[5;6]; %样例中求最大值,取反转化为最小值,也可以在函数中传-f来解决
    %与标准不等式一致,需要转化符号,直接传参数实施-a
    A=[1,-2;-2,3];  
    %与标准不等式一致,需要转化符号,直接传参数实施-b
    b=[2;2];
    %不存在等式,用[]代替
    %zeros(21)就是(00%ub不存在,可以不用写,也可以用[]代替
    %ub不存在,可以不用写,也可以用[]代替
    %[x,y] = linprog(-f,-A,-b,[],[],[],[]);
    [x,y] = linprog(-f,-A,-b,[],[]);
    

    结果展示

    Optimal solution found.
    x =
      -10.0000
       -6.0000
    y =
       86.0000
    

    x1 = -10, x2 = -6;
    max z = -86;

    例3
    min z = 0.3 * x1 + 0.5 * x2;
    0.5 * x1 +0.5 * x2 >= 2;
    1.0 * x1 +0.3 * x2 >= 3;
    0.2 * x1 +0.6 * x2 >= 1.2;
    0.5 * x1 +0.2 * x2 >= 2;
    x1 , x2 >=0;


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^