matlab局部放大的图中图画法
生活随笔
收集整理的這篇文章主要介紹了
matlab局部放大的图中图画法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【親測有效】
在作圖過程中,如果想將局部信息展示出來并且畫在同一張圖中,一般的MATLAB作圖法就比較拙計了,好在MATLAB還是很強大的,當然,除了不能當女朋友之外 .... ╮(╯▽╰)╭
function showdetail()% 在當前的axes上操作,用矩形框選出感興趣的一 % 塊區域然后在現有的axes里新建一axes將其畫出set(gcf,'color','white'); % 拿到axes在figure中的坐標值及其刻度值分布范圍 Pos = get(gca,'Position'); X0 = Pos(1); Y0 = Pos(2); DX = Pos(3); DY = Pos(4); DLX = xlim; DLY = ylim;% 拿到axes中曲線數據 h = findobj(gcf,'Type','line'); xdata = get(h,'XData'); ydata = get(h,'YData'); Color = get(h,'Color'); LineStyle = get(h,'LineStyle'); LineWidth = get(h,'LineWidth'); Marker = get(h,'Marker'); MarkerSize = get(h,'MarkerSize'); MarkerEdgeColor = get(h,'MarkerEdgeColor'); MarkerFaceColor = get(h,'MarkerFaceColor');% 選取需要放大顯示的細節部分ROI h1 = imrect; % 框選出需要的區域 wait(h1); pos = getPosition(h1); % 返回區域的位置和大小 x0 = pos(1); y0 = pos(2); dx0 = pos(3); dy0 = pos(4);% 細節部分的下標 if iscell(xdata) == 0 indx1 = find( xdata >= x0 );indx2 = find( xdata <= x0+dx0 );indx = indx1(1):indx2(end); elsem = length(xdata);indx1 = find( xdata{1}>=x0 );indx2 = find( xdata{1}<=x0+dx0 );indx = indx1(1):indx2(end); endhold on; LineX = x0:dx0/10:x0+dx0; LineY = y0:dy0/10:y0+dy0; plot(LineX,y0*ones(size(LineX)),'k'); plot(LineX,(y0 + dy0)*ones(size(LineX)),'k'); plot(x0*ones(size(LineY)),LineY,'k'); plot((x0+dx0)*ones(size(LineY)),LineY,'k');h2 = imrect; wait(h2); pos = getPosition(h2); x = pos(1); y = pos(2); dx = pos(3); dy = pos(4);xn = X0 + DX*(x - DLX(1))/( DLX(2) - DLX(1) ); yn = Y0 + DY*(y - DLY(1))/( DLY(2) - DLY(1) ); dxn = DX*dx / ( DLX(2) - DLX(1) ); dyn = DY*dy / ( DLY(2) - DLY(1) ); delete(h1); delete(h2); axes('Position', [xn yn dxn dyn]);if iscell(xdata) == 0 plot(xdata(indx),ydata(indx),...'Color',Color,...'LineStyle',LineStyle,...'LineWidth',LineWidth,...'Marker',Marker,...'MarkerSize',MarkerSize,...'MarkerEdgeColor',MarkerEdgeColor,...'MarkerFaceColor',MarkerFaceColor); elsefor i = 1:mplot(xdata{i}(indx),ydata{i}(indx),...'Color',Color{i},...'LineStyle',LineStyle{i},...'LineWidth',LineWidth{i},...'Marker',Marker{i},...'MarkerSize',MarkerSize{i},...'MarkerEdgeColor',MarkerEdgeColor{i},...'MarkerFaceColor',MarkerFaceColor{i});hold on;endend set( gca , 'Box', 'off'); axis([x0 x0+dx0 y0 y0+dy0]); hold off;end先準備好一張圖,然后直接在命令行里運行
showdetail();然后分為如下幾部操作:
【1】這是事先準備好的一張圖
?
【2】運行程序后選擇ROI,即感興趣的區域,雙擊左鍵確定
?
?
【3】選擇你想要放置的地方,雙擊左鍵確定
?
?
【4】成品圖
?
再次感受到了MATLAB的強大。。。。。當然,這里并沒講什么氣泡動力學,只是借用了一張數值解的圖......( ̄▽ ̄).....,下一章應該會講一講瑞利氣泡動力學 ( ̄︶ ̄)
?
總結
以上是生活随笔為你收集整理的matlab局部放大的图中图画法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 视频和音乐的剪辑与拼接
- 下一篇: 【OS学习笔记】四十 保护模式十:中断和