如何在C#中执行matlab中的循环?

时间:2013-11-20 11:28:00

标签: c# matlab image-processing

这是我在C#中的代码。我试图在matlab中执行for循环。我可以在matlab上发送和接收图像。

matlab.Execute("img_bw = im2bw(img_resize)");
matlab.Execute("input = imclose(img_bw, strel('disk', space));");
matlab.Execute("[labels, num] = bwlabel(input, 8);");
matlab.Execute("output = logical(zeros(size(input)));");

matlab.Execute("for i = 1:num ");
matlab.Execute("    [r, c] = find(labels==i)");
matlab.Execute("    x = round(mean(c))");
matlab.Execute("    y = round(mean(r))");
matlab.Execute("    output(y,x) = 1; ");
matlab.Execute("end;");

现在,如果你看看'matlab.Execute(“output = logical(zeros(size(input)));”)之后的语句。 ',有一个for循环。

如何在matlab中成功执行for循环?我正在使用matalb服务器在matalb上执行matlab命令。也就是说,我的电脑上安装了matlab。

1 个答案:

答案 0 :(得分:1)

为了做到这一点,你必须将所有内容作为一个字符串传递,每行用分号分隔。像这样的东西

matlab.Execute("for i = 1:num; [r, c] = find(labels==i); x = round(mean(c));y = round(mean(r)); output(y,x) = 1; end;");

正如Jensen在评论中提到的那样,你也可以将代码行连接成一个字符串,然后将其传递给matlab.Execute(codeString)命令。