【问题标题】:Converting C++ to MATLAB将 C++ 转换为 MATLAB
【发布时间】:2021-01-29 20:18:52
【问题描述】:

我正在尝试将一些 C++ 代码转换为 MATLAB,但遇到了问题。有人请从下面解释一行代码。

  int *image      = (int *) malloc(size*sizeof(int)) ;

  bool diff = true;
  while (diff)
  {
     diff = false;
    for (unsigned int itt = 0; itt < size; itt++)
    {
      diff = diff || (image[itt] != image[image[itt]]);
      image[itt] = image[image[itt]];
    }
  }

谁能解释一下

  diff = diff || (image[itt] != image[image[itt]]);
  image[itt] = image[image[itt]];

这部分

image[image[itt]]

我不明白这在 MATLAB 中是如何工作的

Image = zeros(100,100);

ImageSize = (Image);
diff = true;

while(diff)
    diff = false;
    for x=1:ImageSize(1) % Height
        for y=1:ImageSize(2) % Width
        diff = diff || (image(x,y) ~= ????);
        image(x,y) = ????;
        end
    end
end

感谢任何可以帮助我理解这一点的人。

【问题讨论】:

  • 所以你不明白C++代码是干什么的?或者你不明白如何在Matlab中做到这一点?

标签: c++ matlab image-processing


【解决方案1】:

首先,ImageSize = (Image); 不正确。这将简单地将Image 分配给ImageSize。请改用ImageSize = size(Image);

其次,您在 Matlab 代码中使用双索引,而 C++ 代码使用单索引。

while(diff)
    diff = false;
    for n=1:numel(Image) %# Total pixels in the image
        diff = diff || (Image(n) ~= Image(Image(n)));
        Image(n) = Image(Image(n));
    end
end

您可能需要转置矩阵,因为我不确定 C++ 代码是按列还是按行操作。此外,由于您将矩阵初始化为全零 (zeros(100,100);),因此您将得到全零作为结果。尝试将其初始化为实际图像或至少是随机整数。

干杯!

【讨论】:

    猜你喜欢
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    • 2013-05-13
    • 2016-11-07
    • 2023-03-27
    • 2014-05-21
    • 1970-01-01
    相关资源
    最近更新 更多