“更快的方式”;for loop";在matlab中

“更快的方式”;for loop";在matlab中,matlab,loops,Matlab,Loops,我想用圆点填充单位圆。但是我写的代码非常慢。有没有其他方法可以让Matlab运行得更快 y = linspace(-1, 1, 200); x = linspace(-1, 1, 200); for i = 1: length(x) for j = 1: length(y) if (x(i)^2 + y(j)^2 < 1) plot(x(i),y(j),'.'); end end end

我想用圆点填充单位圆。但是我写的代码非常慢。有没有其他方法可以让Matlab运行得更快

y = linspace(-1, 1, 200);
x = linspace(-1, 1, 200);
for i = 1: length(x)
    for j = 1: length(y)
        if (x(i)^2 + y(j)^2 < 1)
            plot(x(i),y(j),'.');               
        end
    end
end
y=linspace(-1,1200);
x=linspace(-1,1200);
对于i=1:长度(x)
对于j=1:长度(y)
如果(x(i)^2+y(j)^2<1)
图(x(i),y(j),",;
结束
结束
结束

您可以使用
meshgrid
创建两个矩阵(
xx
yy
),其中两个矩阵中的每个对应值都是
x
y
值的唯一组合,而不是循环通过
x
y
的每个排列。然后可以使用这些矩阵立即计算条件(
xx.^2+yy.^2<1
)。这将产生一个大小为xx的逻辑数组,我们可以用它来绘制单位圆内的点

[xx,yy] = meshgrid(x, y);
inside = xx.^2 + yy.^2 < 1;

% Now plot just these points
plot(xx(inside), yy(inside), '.');
[xx,yy]=meshgrid(x,y);
内=xx.^2+yy.^2<1;
%现在只画这些点
地块(xx(内)、yy(内),“);

您可以使用
meshgrid
创建两个矩阵(
xx
yy
),而不是循环遍历
x
y
的每个排列,其中两个矩阵中的每个对应值都是
x
y
值的唯一组合。然后可以使用这些矩阵立即计算条件(
xx.^2+yy.^2<1
)。这将产生一个大小为xx的逻辑数组,我们可以用它来绘制单位圆内的点

[xx,yy] = meshgrid(x, y);
inside = xx.^2 + yy.^2 < 1;

% Now plot just these points
plot(xx(inside), yy(inside), '.');
[xx,yy]=meshgrid(x,y);
内=xx.^2+yy.^2<1;
%现在只画这些点
地块(xx(内)、yy(内),“);

非常感谢您,先生。真的很有帮助非常感谢你,先生。这真的很有帮助