La fusion de deux chiffres dans Matlab

Je suis en train d'exécuter un script Matlab (ci-dessous) qui produit quatre séparée graphiques. Je veux combiner deux de ces graphiques, de sorte que le sont affichées simultanément. Les graphiques je souhaite combiner j'ai fait référence à la FIGURE 2 et la FIGURE 4 dans le script ci-dessous.

La seule entrée pour le script est un fichier txt avec 6 colonnes: les coordonnées x, y les coordonnées et 4 variables (Profondeur [m], Hsig [m] , Période de [s] , Dir [degrés])

Toute aide serait grandement appréciée.

% Post-process a SWAN wave model output file
%----------------------------------------------------------------------------------------------
%defaults
N_header = 7; % header lines in SWAN file
N_vars = 6;           %output variables in SWAN file
x_origin = 0;    %real world x origin
y_origin = 0;   %real world y origin
quiver_subsample = 6; %sub-sampling factor to make direction plot clearer
rot_angle = 0; %rotation angle to correct any previous rotation for SWAN
island_mask = load('island_mask.txt'); %mask for islands (set land to NaN);
%specify input file
[filename,pathname] = ...
  uigetfile('*.txt', 'Specify SWAN results file (e.g. Scilly.txt) [*.txt]');
SWANfile = fullfile(pathname,filename);
%read (and ignore) file header lines
fid = fopen(SWANfile);
for i=1:N_header
head = fgets(fid);
end
%and now get the data
data = fscanf(fid,'%g %g',[N_vars inf]); data = data';
fclose(fid);
%extract the datasets we want, marking any junk values (e.g. dry land)
XP = data(:,1);
YP = data(:,2);
DEPTH = data(:,3);
dudsDEPTH = (DEPTH==-99);
DEPTH(dudsDEPTH) = NaN;
HS = data(:,4);
dudsHS = (HS==-9);
HS(dudsHS) = NaN;
PER = data(:,5);
dudsPER = (PER==-9);
PER(dudsPER) = NaN;
DIR = data(:,6);
dudsDIR = (DIR==-999);
DIR(dudsDIR) = NaN;
minX = min(XP);
minY = min(YP);
maxX = max(XP);
maxY = max(YP);
cellsize = XP(2) - XP(1);
% mesh and plot data onto scaled output grids
[xp,yp] = meshgrid(minX:cellsize:maxX,minY:cellsize:maxY);
sx = size(xp); xlen = sx(2); ylen = sx(1);
depth = reshape(DEPTH,xlen,ylen);
hs = reshape(HS,xlen,ylen);
per = reshape(PER,xlen,ylen);
dir = reshape(DIR,xlen,ylen);
depth_rot = flipud(rot90(depth,1));%pcolor(depth_rot);shading flat
hs_rot = flipud(rot90(hs,1));%pcolor(hs_rot);shading flat
per_rot = flipud(rot90(per,1));%pcolor(per_rot);shading flat
dir_rot = flipud(rot90(dir,1));
%remember that actual directions also need rotating (i.e. not just matrix!)
dir_rot = dir_rot + rot_angle; %pcolor(dir_rot);shading flat
xp_rot = xp;
yp_rot = yp;
%create x and y matrices in real world co-ordinates
xp_rot = xp_rot + x_origin;
yp_rot = yp_rot + y_origin;
%and equivalent x and y vectors, in case we need these instead
grid_cells = size(xp_rot);
x_cells = grid_cells(2); %columns
y_cells = grid_cells(1); %rows
x_utm = x_origin:cellsize:x_origin + (x_cells*cellsize);
y_utm = y_origin:cellsize:y_origin + (y_cells*cellsize); 
% y_utm = fliplr(y_utm); % flip to ensure cartesian rather than image axes
%create bathymetry plot
figure(1)
if ~isempty(island_mask)
depth_rot_plot = depth_rot;
depth_rot_plot(island_mask) = NaN;
imagesc(x_utm,y_utm,depth_rot_plot)
colormap(jet(256));
map = colormap;
map(1,:) = 1;
% map(2,:) = 1;
% map(3,:) = 1;
colormap(map); 
else
imagesc(x_utm,y_utm,depth_rot)
end
title('Bathymetry (m)', 'fontsize', 12)
set(gca,'fontsize', 12);
axis equal
axis tight
axis xy % need this to ensure cartesian rather than image axes!
colorbar
%create direction plot
figure(2)
[U,V] = pol2cart((dir_rot) ./ (180/pi),ones(size(dir_rot)));
% and sub-sample output grid to produce clearer plot
U_subsample = nestedsubsample2(U,quiver_subsample);
V_subsample = nestedsubsample2(V,quiver_subsample);
X_subsample = nestedsubsample2(xp,quiver_subsample);
Y_subsample = nestedsubsample2(yp,quiver_subsample);
quiver(X_subsample,Y_subsample,U_subsample,V_subsample,'k');
title('Direction')
axis equal
axis tight
%visualise wave breaking by taking ratio of Hs and depth
breaking = hs_rot ./ depth_rot;
breaking(breaking > 0.7) = 0.70;
%create Hb/depth plot to show where waves are shoaling and/or breaking
figure(3)
imagesc(x_utm,y_utm,breaking)
title('Hs /depth', 'fontsize', 12)
set(gca,'fontsize', 12);
axis equal
axis tight
axis xy % need this to ensure cartesian rather than image axes!
colorbar
%create Hs plot
figure(4)
imagesc(x_utm,y_utm,hs_rot)
title('Hs (m)', 'fontsize', 12)
set(gca,'fontsize', 12);
axis equal
axis tight
axis xy % need this to ensure cartesian rather than image axes!
colorbar
function [subsampled_A] = nestedsubsample2(A,I)
%NESTEDSUBSAMPLE2(A,I)
%resample 2D matrix A by retaining every Ith element
if I < 1
I = 1;
end
A_dim = size(A);
new_i = 1:I:A_dim(1);
new_j = 1:I:A_dim(2);
subsampled_A = A(new_i,new_j);
end
end
  • . mes yeux ... ... s'il vous plaît, format le code ..
  • Vous voulez deux personnages côte à côte ou superposés, d'une certaine manière?
  • Vous n'avez vraiment pas besoin de poster la totalité de votre script dans la question. Un exemple de code qui nous donne une idée de ce que vous avez tenté devrait suffire.
  • Voir ma solution à une question connexe: stackoverflow.com/questions/4008880/...
InformationsquelleAutor C Checkley | 2010-01-25