av久久久-av九九九-av九九-av激情网-欧美三级在线-欧美三级一区二区三区

MATLAB toolbox(1)

2017-01-16  by:CAE仿真在線  來源:互聯網

以下函數自編;主要用于在一個figure上畫多個類似的圖,各小圖之間橫軸縱軸范圍要近的圖。



實現功能如下圖所示

[h,ax,bigax]=multigrid('newfig',4,2);

在一個figure生成4行2列的axis

MATLAB toolbox(1)

分別在每個axis上畫圖

x = randn(100,4,2);

for i=1:4
for j =1:2
set(h,'CurrentAxes',ax(i,j),'NextPlot','add');
stairs(x(:,i,j));
axis tight;

end
end


MATLAB toolbox(1)

去掉各axis橫縱軸,只留最下,最左坐標格
multigrid('adjust',ax)


MATLAB toolbox(1)


為每個小圖標記

numlab = {'a','b';
'c','d';
'e','f';
'g','h'}
multigrid('label',ax,numlab);

MATLAB toolbox(1)



xlabel(bigax,'time');ylabel(bigax,'amplitude')

title(bigax,'signals')

MATLAB toolbox(1)


===============源程序===============================


function varargout=multigrid(flag,varargin)
% MULTIPLOT
% [H,AX,BIGAX]=MULTIPLOT(ROWS,COLS,LABEL,FUNHANDLE)
%
% [h,ax,bigax]=multigrid(flag,varargin)
%
% [h,ax,bigax]=multigrid('newfig',rows,cols)
% multigrid('label',ax,numlabel)
% multigrid('adjust',ax)
% multigrid('add',ax,codes,varargin);
%
% flag:
% newfig, creat new figure with the setting rows and cols.
% label, add the label on the figure
% adjust, adjust the x and y axes limit
%
%
% Author: J.H.Zhu<jhzhu99@gmail.com>
% Date: April 06, 2011.
% Revised:
% Revised:


switch flag
case {'newfig'}
rows =[]; cols =[];
if nargin>1,rows=varargin{1};end
if nargin>2, cols=varargin{2};end

if isempty(rows),rows =1; end
if isempty(cols),cols =1; end

h = clf;
BigAx = newplot;

set(BigAx,'Visible','off','color','none');

ax =zeros(rows,cols);
pos = get(BigAx,'Position');
width = pos(3)/cols;
height = pos(4)/rows;
space = .05; % 3 percent space between axes
pos(1:2) = pos(1:2) + space*[width height];
for i=rows:-1:1,
for j=cols:-1:1,
axPos = [pos(1)+(j-1)*width pos(2)+(rows-i)*height ...
width*(1-space) height*(1-space)];
ax(i,j) = axes('Position',axPos,'parent',h,...
'visible', 'on', 'Box','on');
end
end
idx = false(rows,cols);idx(rows,:)=1;
set(ax(~idx),'xticklabel','');
idx = false(rows,cols);idx(:,1)=1;
set(ax(~idx),'yticklabel','');

% Also set Title and X/YLabel visibility to on and strings to empty
set([get(BigAx,'Title'); get(BigAx,'XLabel'); get(BigAx,'YLabel')], ...
'String','','Visible','on');

varargout ={h,ax,BigAx};
case {'label'}
ax =[]; label=[];
if nargin>1,ax = varargin{1}; end
if nargin>2,label=varargin{2}; end

if isempty(ax),return; end
if isempty(label),return;end

[rows,cols]=size(ax);
for i =rows:-1:1
for j =cols:-1:1
if isnan(ax(i,j)),xlim(i,j,1:2)=NaN; ylim(i,j,1:2)=NaN; continue;end
set(get(ax(i,j),'parent'),'CurrentAxes',ax(i,j));
xlim(i,j,:)=get(ax(i,j),'xlim');
ylim(i,j,:)=get(ax(i,j),'ylim');
if ~isempty(label)
if isnumeric(label{i,j}),tex = num2str(label{i,j});
else tex =label{i,j};end
if ~all(isnan(tex))||~isempty(tex)
text(xlim(i,j,2),ylim(i,j,1),['\bf',tex],...
'HorizontalAlignment','center',...
'VerticalAlignment','baseline',...
'BackgroundColor',[0.992 0.918 0.796],...
'Interpreter','tex');
end
end
end
end

case {'adjust'}
ax =[];
if nargin>1,ax=varargin{1};end
if isempty(ax),return;end

[rows,cols]=size(ax);
for i =rows:-1:1
for j =cols:-1:1
if isnan(ax(i,j))
xlim(i,j,:)=NaN; ylim(i,j,:)=NaN;
continue;
end
set(get(ax(i,j),'parent'),'CurrentAxes',ax(i,j));
xlim(i,j,:)=get(ax(i,j),'xlim');
ylim(i,j,:)=get(ax(i,j),'ylim');
end
end

xlimmin =min(xlim(:,:,1),[],1); xlimmax =max(xlim(:,:,2),[],1);
ylimmin =min(ylim(:,:,1),[],2); ylimmax =max(ylim(:,:,2),[],2);

inset = .02;
for i=1:rows,
if isnan(ax(i,1)),continue;end
set(ax(i,1),'ylim',[ylimmin(i,1) ylimmax(i,1)])
dy = diff(get(ax(i,1),'ylim'))*inset;
idx = isnan(ax(i,:));
set(ax(i,~idx),'ylim',[ylimmin(i,1)-dy ylimmax(i,1)+dy])
end
for j=1:cols
if isnan(ax(1,j)),continue;end
set(ax(1,j),'xlim',[xlimmin(1,j) xlimmax(1,j)])
dx = diff(get(ax(1,j),'xlim'))*inset;
idx = isnan(ax(:,j));
set(ax(~idx,j),'xlim',[xlimmin(1,j)-dx xlimmax(1,j)+dx])
end
idx = findemptyidx('xtick',ax);
set(ax(~idx),'xticklabel','')
idx = findemptyidx('ytick',ax);
set(ax(~idx),'yticklabel','')
case {'add'}
ax =[];
if nargin>1,ax=varargin{1};end
if nargin>2,codes = varargin{2};end
if isempty(ax),return;end
if isempty(codes);return;end

[rows,cols]=size(ax);
for i =rows:-1:1
for j =cols:-1:1
if isnan(ax(i,j)),continue;end
set(get(ax(i,j),'parent'),'CurrentAxes',ax(i,j));
eval_r(codes);
end
end


otherwise
return;
end



function idx = findemptyidx(axesname,ax)

switch axesname

case {'xtick'}
rows=size(ax,1);
idx = isnan(ax);
[m,n]=find(idx==1);
a = m-1; a(a<1)=1;
b = m+1; b(b>rows)=rows;

idx(a,n)=1; idx(b,n)=1;
idx(end,:)=1;

case {'ytick'}
cols=size(ax,2);
idx = isnan(ax);
[m,n]=find(idx==1);
a = n-1; a(a<1)=1;
b = n+1; b(b>cols)=cols;

idx(m,a)=1; idx(m,b)=1;
idx(:,1)=1;

end


開放分享:優質有限元技術文章,助你自學成才

相關標簽搜索:MATLAB toolbox(1) MatLab培訓 MatLab培訓課程 MatLab在線視頻教程 MatLab技術學習教程 MatLab軟件教程 MatLab資料下載 MatLab代做 MatLab基礎知識 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓 Abaqus培訓 

編輯
在線報名:
  • 客服在線請直接聯系我們的客服,您也可以通過下面的方式進行在線報名,我們會及時給您回復電話,謝謝!
驗證碼

全國服務熱線

1358-032-9919

廣州公司:
廣州市環市中路306號金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓QQ咨詢:點擊咨詢 點擊咨詢
項目QQ咨詢:點擊咨詢
email:kf@1cae.com




主站蜘蛛池模板: 韩国电影《我是谁》演员表介绍| 张耀扬个人资料简介 | 金璐莹| 神笔马良动画片| 影库影片| 栏目大全| 那个不为人知的故事电视剧| 我的公主| 闵允渡李秀主演电影| 金秀贤real| 迷你大冒险| 女同性视频| 瑞斯·伊凡斯| 陕09j01图集| 张少军| 宇宙大战| 保镖1993电视剧正版免费观看| 小学道德与法治课程标准2023版| 画画的视频| 霹雳俏娇娃| 敦君和女朋头| 《牵牛花》阅读答案| 蓝家宝电影| 舞娘电影在线观看免费完整版电影| 张天爱出生于哪年?| 郭德纲7000字微博原文| 高欣生| 一级毛片色一级| 杨子姗赵又廷演的电影叫什么| 梁山伯与祝英台电影| 胖猫图片| 台湾电视台| 吉川爱美番号| 爱情最美丽 电视剧| 孙泽源个人简介| 猎魔人电影| 翔田千里高清在线播放| 电视剧昨夜星辰| 电影《uhaw》免费观看| xzj| 请赐我一双翅膀在线观看|