检查矩阵元素

时间:2018-11-19 21:45:22

标签: matlab matrix polar-coordinates cartesian-coordinates

我需要一个(rho,theta) meshgrid,然后首先在笛卡尔坐标中定义meshgrid,然后将其转换为极坐标:

[X,Y] = meshgrid(x,y);
R = sqrt(X.^2+Y.^2);
PHI = atan2(Y,X);

现在我得到的是极坐标网格,但是由于它是平方网格,所以我得到了这个东西

enter image description here

我说大于R的值是错误的,因此我将它们设置为零。我是这样做的

for i = 1:1:length(R)
    for j = 1:1:length(R)
        if R(i,j) > a
            R(i,j) = 0;
        else
            R(i,j);
        end
    end
end

我该如何减少复杂性?

2 个答案:

答案 0 :(得分:3)

要直接将笛卡尔直角坐标转换为极坐标,请使用cart2pol

[theta,rho] = cart2pol(x,y)

然后将执行简单的逻辑检查:

tmp = rho>R;
rho(tmp)=0; %=[] to delete completely
theta(tmp)=0;

对于它的价值:您当然可以创建一个直接的极坐标网格:

[theta,rho] = meshgrid(0:dtheta:theta,0:dR:R)

最后:i and j denote the imaginary unit在MATLAB中,出于这篇文章中提到的原因,我反对将它们用作常规变量,但这是我的看法。

答案 1 :(得分:1)

如果我们说a是您要使用的限制,则可以使用以下代码代替for循环:

R = (R<=a).*R

或者您也可以使用:

R(R>a) = 0