转换C++;到MATLAB 我试图把一些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]]; } }

转换C++;到MATLAB 我试图把一些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]]; } },c++,matlab,image-processing,C++,Matlab,Image Processing,这部分 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[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

感谢所有能帮助我理解这一点的人。

首先,
ImageSize=(Image)不正确。这只需将
Image
分配给
ImageSize
。使用
ImageSize=size(图像)取而代之

第二,在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(100100);
),因此您将得到所有的零作为结果。尝试将其初始化为实际图像或至少随机整数


干杯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