重複の可能性:
matlab: 多数のデータポイントを含む散布図
それぞれ 315,000 要素の 3 つのベクトルがあります。X、Y、および Z。X と Y は座標で、Z は値です。座標を 2D グラフの点としてプロットする必要があります。Z は、X と Y の各座標のカラー インジケーターです。「散布」コマンドを試しましたが、非常に遅いです。誰かがより良い方法を提案しますか?
ありがとう!
重複の可能性:
matlab: 多数のデータポイントを含む散布図
それぞれ 315,000 要素の 3 つのベクトルがあります。X、Y、および Z。X と Y は座標で、Z は値です。座標を 2D グラフの点としてプロットする必要があります。Z は、X と Y の各座標のカラー インジケーターです。「散布」コマンドを試しましたが、非常に遅いです。誰かがより良い方法を提案しますか?
ありがとう!
探しているカラーマップの種類に応じて、次のようなものを試すことができます
zmin=min(Z);
zmax=max(Z);
map=colormap;
color_steps=size(map,1);
hold on
for i=1:color_steps
ind=find(Z<zmin+i*(zmax-zmin)/color_steps & Z>=zmin+(i-1)*(zmax-zmin)/color_steps);
plot(X(ind),Y(ind),'o','Color',map(i,:));
end
発見は少し高価ですが、 よりも速いようですscatter
。これをさらに最適化できると確信しています。
ここでcline
MATLABファイル交換から試してください。それはまさにあなたが望むことをしているように見えます。
SCATTER 関数が原因ではなく、ベクトルのサイズが大きいためにコードが遅くなります。それらをより小さなサイズのベクトル (たとえば、それぞれ 10 要素) に分割し、各ベクトルをセル配列のセルに入れてみてください。次に、cell 配列をループ処理し、小さなベクトルを個別に分散させて、メモリに大量のデータが読み込まれないようにします。
hold on
for i=1:numel(XcoordCellArray):
scatter(XcoordCellArray{i},YcoordCellArray{i},S,ZcoordCellArray{i})
end