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

如何从C#在matlab中执行循环?,c#,matlab,image-processing,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(ze

这是我的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”(“输出=逻辑(零(大小(输入));”)之后的语句,”,有一个for循环


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

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

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)
命令。

您不能将整个循环作为一个命令传递吗?使用
StringBuilder
构建整个字符串,然后通过
Execute()
方法发送一次。