0

ネストされた for ループで生成された行列にデータがあります。特定の条件を満たすデータのみをプロットしたい (例: より大きくなければならない0.6)。データ ポイントがその条件を満たしているかどうかは、マトリックスとして、1またはマトリックスに格納されます。0mlist

これをMatlabでプロットする最も簡単な方法は何ですか? 条件を満たさないデータ ポイントについては、単なる空白である可能性があります。

xlist = linspace(-1,1,20);
ylist = linspace(-2,2,30);

zlist = zeros(length(xlist),length(ylist));
mlist = zeros(length(xlist),length(ylist));

% iteration counter
ii = 0;
jj = 0;

for x = xlist
    ii = ii + 1;

    for y = ylist
        z = sin(x*y);
        jj = jj + 1;
        zlist(jj) = z;

        if z > 0.6
            mlist(jj) = 1;
        else
            mlist(jj) = 0;
        end
    end
end

contourf(ylist,xlist,zlist)

mesh(ylist,xlist,zlist)
4

2 に答える 2

1

MATLAB のプロット内のデータを実際にデータから削除する必要なく (不均一なグリッドなどで問題が発生するため) 「削除」する方法はNaN、ほとんどの MATLAB プロットが を扱うため、 に置き換えます。NaN欠落データとして表示され、その点には何も描画されません。

次のようにループを使用しないようにプログラムを変更できます。

[x,y]=meshgrid(linspace(-1,1,20),linspace(-2,2,30));

z = sin(x.*y);
zlist(z<0.6)=NaN;
contourf(y,x,zlist); % // maybe x,y?
于 2016-03-07T10:34:38.727 に答える