这是我在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。
答案 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)
命令。