[KEA]matlab Data Visualization

전종원·2023년 2월 20일
0

1. Data Visualization(1)

  • 데이터 세팅
  • figure 명령어로 윈도우 생성
  • plot 명령어로 데이터 시각화
f1 = figure('Name', '10 point');
f2 = figure('Name', '100 point');

x = linspace(0, 2*pi, 10); % 0~ 2*3.14xxxx 사이에 10개의 x값을 설정
y1 = sin(x);
y2 = sin(x - pi/4);

figure(f1);
plot(x,y1, 'r');
hold on; % y1에 대한 plot을 유지한 채 진행
plot(x, y2, 'b');
hold off;


x = linspace(0, 2*pi, 100); % 0~ 2*3.14xxxx 사이에 100개의 x값을 설정
y1 = sin(x);
y2 = sin(x - pi/4);

figure(f2);
plot(x, y1, 'Color', [0.3010 0.7450 0.9330]);
hold on; % y1에 대한 plot을 유지한 채 진행
plot(x, y2, 'Color', [0.8500 0.3250 0.0980]);
hold off;

  • hold on으로 여러 그래프를 한 plot에 표현 가능
  • 'Color' 혹은 'r'로 그래프 색상 지정가능
figure(1);
plot(x,y2);
hold on; % 'o' / '+' / '*' / 'd' ...
plot(x,y1,'-s','MarkerSize',10,'MarkerEdgeColor','red', 'MarkerFaceColor',[1 .6 .6])

figure(2);
plot(x,y2,'LineWidth',0.5)
hold on;
plot(x,y1,'--s','MarkerIndices',1:10:length(y1),'MarkerSize',10, 'MarkerFaceColor',[1 .6 .6])


x = linspace(0,2*pi,1000);
n = rand(size(x));
y1 = sin(x);
y2 = y1 + n - mean(n);
figure(3);
plot(x,y2); hold on;
plot(x,y1);

figure(4);
plot(x,y2,'LineWidth',0.5) % Default
hold on;
plot(x,y1,'-.','LineWidth',4,'Color', [0.8500 0.3250 0.0980]);

  • 데이터 위에 마커표시 가능
  • 마커의 색, 모양, 라인 굵기, 라인종류등을 설정 가능

2. Data Visualization(2)

2.1. sub plot

subplot(2,2,1)
plot(time, signal_ref)
title('Subplot 1: Reference')
subplot(2,2,2)
plot(time, signal_1)
title('Subplot 1: Noise 1')
subplot(2,2,3)
plot(time, signal_2)
title('Subplot 1: Noise 2')
subplot(2,2,4)
plot(time, signal_3)
title('Subplot 1: Noise 3')

2.2. tab 생성

close all; freq = 2; step = 0.01; time = 0:step:1;
noise1 = rand(size(time)) .* 2;
signal_ref = sin(2*pi*time*freq);
signal_1 = signal_ref + noise1 - mean(noise1);

figure
tab1 = uitab('Title','Reference');
ax1 = axes(tab1);
plot(time, signal_ref)
tab2 = uitab('Title','Noise 1');
ax2 = axes(tab2);
plot(time, signal_1)
  • axes를 생성 후 x, y좌표에 데이터를 뿌려주면 탭이 생성됨

2.3. 2개의 축 사용

figure(4)
yyaxis left
plot(time, signal_ref);
title('reference');
xlabel('time');
ylabel('data');

yyaxis right;
plot(time, signal_1);
title('noise 1');
ylabel('noise data');
  • yyaxis left, yyaxis right를 사용하여 두개 축 사용 가능
  • ylabel로 각각의 라벨설정 가능

2.4. animation 생성 및 영상 만들기

close all;
figure(5)
plot(time, signal_1);
hold on;
plot(time, signal_ref, 'g', 'LineWidth', 4); % reference plot
sig_plot_1 = plot(time(1), signal_1(1), 's', 'MarkerFaceColor', 'blue'); % get only first data of signal_1
sig_plot_2 = plot(time(1), signal_ref(1), 'o', 'MarkerFaceColor', 'red'); % get only first data of signal_ref
hold off;

M(1) = getframe;
for k = 1:length(time)
    sig_plot_1.XData = time(k);
    sig_plot_1.YData = signal_1(k);
    sig_plot_2.XData = time(k);
    sig_plot_2.YData = signal_ref(k);
    M(k) = getframe;
end

v = VideoWriter('newfile.avi');
open(v);
writeVideo(v, M);
close(v);

2.5. 3D plot

z = 0 : 0.1 : 40;
x = cos(z);
y = sin(z);
plot3(x, y , z)
grid on;

z = peaks(100);
figure('name', 'Surface');
surf(Z);
zmin = floor(min(z(:)));
zmax = ceil(max(z(:)));
zinc = (zmax - zmin) / 40;
zlevs = zmin:zinc:zmax;
figure('name', 'Contour');
[C, h] = contour(Z, zlevs)
clabel(C, h)


0개의 댓글