필터 지우기
필터 지우기

Control figure title, size and position in for loop

조회 수: 8 (최근 30일)
태신 김
태신 김 2021년 11월 22일
댓글: Walter Roberson 2021년 11월 23일
Hi all,
I want to express the changing Gaussian beam along the z values.
There is a for loop with pause() function for the animation.
The figure is changed with each loop.
But there are two problems.
1. How to add the title of the whole figure, not subtitles?
2. As soon as I execute the code, the figure frame is created that I intended, but instantly, the figure size is changed to small, and it is placed at not intended position.
Here is the code.
clc; clear all; close alll;
DataSet = zeros(1200,1600,30);
x = linspace(-30,30,1600);
y = linspace(-30,30,1200);
z = linspace(100,10000000,30);
[X Y] = meshgrid(x,y);
lambda = 532*10^(-6);
w0 = 16;
wz = w0*sqrt(1+(lambda*z/(pi*w0^2)).^2);
I0 = 1;
FigH = figure;
set(FigH,'Position',[1000 0 600 900])
for k = 1:5:30
printf('position z: %d / %d \n',z(k),max(z))
DataSet(:,:,k) = I0*(w0/wz(k))^2*exp(-2*(X.^2+Y.^2)/(wz(k)^2));
subplot(3,2,1)
p1 = imagesc(x,y,DataSet(:,:,k));
colormap jet
axis equal
title('Subplot 1')
subplot(3,2,2)
p2 = imagesc(x,y,DataSet(:,:,k));
colormap jet
axis equal
title('Subplot 2')
subplot(3,2,3)
p3 = imagesc(x,y,DataSet(:,:,k));
colormap jet
axis equal
title('Subplot 3')
subplot(3,2,4)
p4 = imagesc(x,y,DataSet(:,:,k));
colormap jet
axis equal
title('Subplot 4')
subplot(3,2,5)
p5 = imagesc(x,y,DataSet(:,:,k));
colormap jet
axis equal
title('Subplot 5')
subplot(3,2,6)
p6 = imagesc(x,y,DataSet(:,:,k));
colormap jet
axis equal
title('Subplot 6')
pause(0.00000001)
end
Any ideas? Thx in advance. ;-)
  댓글 수: 4
태신 김
태신 김 2021년 11월 23일
Thank you for your advice.
Walter Roberson
Walter Roberson 2021년 11월 23일
"There is no problem asking a question about Octave here"
This is a MATLAB / Mathworks forum, Octave is off-topic here, and any question which is specific to Octave may be closed as being irrelevant to MATLAB Answers.
Reminder: the purpose of Octave, the reason it exists, is to try to force Mathworks to either open-source its software... or to shut down the company. Either possibility would be considered a success for the Free Software Foundation.
The Free Software Foundation does not exist to provide high-quality affordable software to people who might otherwise not be able to afford it. The Free Software Foundation is a political entity whose purpose is to try to force the end of proprietary software, and its production of open-source software is a tactic rather than an end of its own.

댓글을 달려면 로그인하십시오.

채택된 답변

Mathieu NOE
Mathieu NOE 2021년 11월 22일
hello
see my suggestion below . I didn't have the problem of figure resizing, but I don't understand why you plot 6 times exactly the same data . I guessed that the 6 subplots should correspond to the 6 iteration steps , so I modified a bit your code to reflect that
for the main title, I used the info available here : How can I insert a title over a group of subplots? - (mathworks.com)
My result at the end of the for loop
clc; clear all; close all;
DataSet = zeros(1200,1600,30);
x = linspace(-30,30,1600);
y = linspace(-30,30,1200);
z = linspace(100,10000000,30);
[X Y] = meshgrid(x,y);
lambda = 532*10^(-6);
w0 = 16;
wz = w0*sqrt(1+(lambda*z/(pi*w0^2)).^2);
I0 = 1;
FigH = figure;
set(FigH,'Position',[1000 0 600 900])
sgtitle('Subplot Grid Title') % create main title
% see : https://fr.mathworks.com/matlabcentral/answers/100459-how-can-i-insert-a-title-over-a-group-of-subplots
for ci = 1:6
k = 1+5*(ci-1);
sprintf('position z: %d / %d \n',z(k),max(z))
DataSet = I0*(w0/wz(k))^2*exp(-2*(X.^2+Y.^2)/(wz(k)^2));
subplot(3,2,ci)
p1 = imagesc(x,y,DataSet);
colormap jet
axis equal
title(['Subplot ' num2str(ci)])
pause(0.25)
end
  댓글 수: 1
태신 김
태신 김 2021년 11월 23일
Thank you for your suggestion.
I know your intention, but it is out of my question range.
Of course, I intended to fill other various plots in each subplot.
I just wondered what shall I do to solve the problems what I refered.
Anyway, thank you for your solution about my questions.
(But Octave doesn't recognize sgtitle().)
Thanks.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Blue에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by