# MATLAB: How to extract a part of the spectrogram

MATLABspectrogram

Hi, I need help. How can I crop a part of the spectrogram? For example in the figure below I need to cut out the part of the spectrogram marked in red with the letter "A" and save it as an image.

% Full spectrogramN = 512;n = 0:N-1;x = exp(1j*pi*sin(8*n/N)*32);figure()spectrogram(x,32,16,64,'centered','yaxis')title('Full Spectrogram')rectX = [120 270];  % x limits of selected rangerectY = [-.8 .8];   % y limits of selected rangeax = gca(); axis(ax, 'tight')rectangle(ax, 'Position', [rectX(1), rectY(1), range(rectX), range(rectY)])% Limit the visible rangefigure()spectrogram(x,32,16,64,'centered','yaxis')ax = gca();rectX = [120 270];  % x limits of selected rangerectY = [-.8 .8];   % y limits of selected rangexlim(ax, rectX)ylim(ax, rectY)title('Limited range using xlim & ylim')
figure()spectrogram(x,32,16,64,'centered','yaxis')ax = gca();originalDAR = ax.DataAspectRatio; rectX = [120 270];  % x limits of selected rangerectY = [-.8 .8];   % y limits of selected rangexlim(ax, rectX)ylim(ax, rectY)ax.DataAspectRatio = originalDAR;title('Maintain data asepct ratio')
figure()spectrogram(x,32,16,64,'centered','yaxis')ax = gca();axis(ax, 'tight')rectX = [120 270];  % x limits of selected rangerectY = [-.8 .8];   % y limits of selected range% Scale axis position axPos = ax.Position; xl = xlim(ax); yl = ylim(ax); xScale = range(rectX)/range(xl); yScale = range(rectY)/range(yl); xShift = (rectX(1)-xl(1))/range(xl); yShift = (rectY(1)-yl(1))/range(yl); xlim(ax, rectX)ylim(ax, rectY)ax.Position(3) = axPos(3)*xScale; ax.Position(4) = axPos(4)*yScale;ax.Position(1) = axPos(1) + xShift;ax.Position(2) = axPos(2) + yShift;title('Maintain region''s area within the figure')