reduce the size of figure,
10 次查看(过去 30 天)
显示 更早的评论
Hello Everyone, How can I reduce the size of figure in Matlab? Thanks
0 个评论
采纳的回答
Jakob Sørensen
2012-4-17
Then you are looking for some clever matrix work, rather than figure size.
Try smth like this:
wavelength = 100;
a = 1:4001;
A = repmat(a, [3001 1]);
B = 3.*(sin((1-A).*2.*pi./wavelength)) + 1003;
figure;
imagesc(B);
Takes less than a second to run on my computer and does around the same. You might have to fix the last couple of details for it to be an exact match.
0 个评论
更多回答(2 个)
Jakob Sørensen
2012-4-17
Here is an example:
% Create a 1000x500 px figure, at the position x,y = 10,10 (starting at the left
% bottom corner)
superFig = figure('Position', [10 10 1000 500]);
If you want to change it for an already existing figure you just use the set function.
% Changes properties of figure named 'superFig'
set(superFig, 'Position', [10 10 1000 500]);
or
% Changes properties of current figure
set(gcf, 'Position', [10 10 1000 500]);
Jakob Sørensen
2012-4-17
Try this:
tic;
xRes = 1; % Sets the resolution (step length), in µm, along the x-axis.
yRes = 1; % Sets the resolution (step length), in µm, along the y-axis.
zRes = 1; % Sets the resolution (step length), in µm, along the z-axis.
xLength = 4000; % Sets the length of the surface in X.
yLength = 3000; % Sets the length of the surface in Y.
wavelength = 100;
f = @(x) 3*sin(x*2*pi/wavelength) + 1003; % The function for the sine wave with the
% amplitude 3 µm and wave length of about 100 µm. Mean level is
% 1003 µm.
% Prints the sine wave into a matrix:
A = zeros(yLength/yRes+1,xLength/xRes+1);
for k = 1:length(A(:,1))
for l = 1:length(A(1,:))
A(k,l) = f(l-1);
end
end
toc;
and then...
tic;
figure(1);
imagesc(A);
toc;
You will see that the plotting part only takes around 1/50 of the total time. What is taking so long is running a loop around 12 million times.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!