Effacer les filtres
Effacer les filtres

UIAxesの最大プロット数

37 vues (au cours des 30 derniers jours)
健斗
健斗 le 26 Juin 2024 à 2:30
目的:MATLAB AppにてUIAxesを用いデータ出力波形を表示させる
課題:データ数が多くUIAxes画面が固める事象が発生。
質問:UIAxesが表示できる最大プロット数を知りたい。
補足:MATLABバージョンはR2022bです。
宜しくお願い致します!!

Réponses (1)

交感神経優位なあかべぇ
交感神経優位なあかべぇ le 30 Juin 2024 à 7:22
Modifié(e) : 交感神経優位なあかべぇ le 30 Juin 2024 à 7:23
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 commentaires
健斗
健斗 le 3 Juil 2024 à 5:13
回答頂き、ありがとうございます!
質問の方が、言葉足らずで申し訳ございません。
今回、pcolorで図を書かせておりまして、pcolorを用いた場合の対策等ございましたら、
ご教授頂けると幸いです。
お手数をおかけしますが、宜しくお願い致します。
交感神経優位なあかべぇ
交感神経優位なあかべぇ le 4 Juil 2024 à 13:16
Modifié(e) : 交感神経優位なあかべぇ le 4 Juil 2024 à 13:19
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にあわせる。

Connectez-vous pour commenter.

Catégories

En savoir plus sur グラフィックス出力のターゲットの指定 dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!