UIAxesの最大プロット数

2 visualizaciones (últimos 30 días)
健斗
健斗 el 26 de Jun. de 2024
目的:MATLAB AppにてUIAxesを用いデータ出力波形を表示させる
課題:データ数が多くUIAxes画面が固める事象が発生。
質問:UIAxesが表示できる最大プロット数を知りたい。
補足:MATLABバージョンはR2022bです。
宜しくお願い致します!!

Respuestas (1)

交感神経優位なあかべぇ
交感神経優位なあかべぇ el 30 de Jun. de 2024
Editada: 交感神経優位なあかべぇ el 30 de Jun. de 2024
uiaxesのプロット数に上限は設けられていないと思いますが、たくさんのplotを表示するより、patchなどを利用してひとつのオブジェクトにデータを集約させるほうが軽くなります。
下記のコードはfigureベースのaxesの例ですが、おそらくuiaxesについても同様に軽くなると思います。
% サンプルデータ。1000個のデータを持つ500個のプロットデータ
x = 1:1000;
y = [rand(1,1000) + (1:500)'];
% 500個のプロットデータをひとつひとつ表示した場合の実行時間計測
tic;
ax = axes();
hold on;
for i = 1 : size(y,1)
plot(ax,x,y(i,:));
end
drawnow();
toc
Elapsed time is 0.763610 seconds.
% 多角形ではなく線情報の表示にするため、データの末尾にnanを挿入
x = [x,nan];
y = [y,nan(size(y,1),1)];
faces = reshape(1:numel(y), length(x), [])';% 多角形の辺の定義
vertices = [repmat(x',size(y,1),1), reshape(y',[],1)];% データ点の定義
% 各プロットの色を設定(ラインの色はlinesを使用)
color = lines();
color = [repmat(color, floor(size(y,1) / size(color,1)), 1); color(1:mod(size(y,1), size(color,1)),:)];
color = repelem(color, length(x), 1);
% patchを使用したプロットの描画時間の計測
tic;
figure();
patch('Faces', faces, 'Vertices', vertices, 'FaceColor', 'none', 'EdgeColor', 'flat', 'FaceVertexCData', color);
drawnow();
toc
Elapsed time is 0.376400 seconds.
  2 comentarios
健斗
健斗 el 3 de Jul. de 2024
回答頂き、ありがとうございます!
質問の方が、言葉足らずで申し訳ございません。
今回、pcolorで図を書かせておりまして、pcolorを用いた場合の対策等ございましたら、
ご教授頂けると幸いです。
お手数をおかけしますが、宜しくお願い致します。
交感神経優位なあかべぇ
交感神経優位なあかべぇ el 4 de Jul. de 2024
Editada: 交感神経優位なあかべぇ el 4 de Jul. de 2024
figureベースのpcolorなら比較的軽いですが、Appのuifigureベースのpcolorは重たいですね…。
対策としては下記などかなぁと思います。
1. figureで表示する。
2. pcolorの使用を避ける。
1.の場合、Appのコールバック関数内に、下記のように記述すれば、別ウィンドウでfigureベースのpcolorを表示できます。
C = reshape(1:10000, 100, 100) .* 0.3;% 仮データ
figure;
pcolor(C);
2.の場合、xデータ, yデータが等間隔ならばimagescでだいたい同じような描画ができます。(imagescならば、軽いです。)
figure;
p = pcolor(C);
p.LineStyle = 'none';% 表示をimagescと合わせるため、Lineを削除
figure;
i = imagesc(C);
i.Parent.YDir = 'normal';% Y軸の方向をpcolorにあわせる。

Iniciar sesión para comentar.

Categorías

Más información sobre ビッグ データの処理 en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!