⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 whatnc.m

📁 matlacb程序包
💻 M
字号:
function whatnc% WHATNC lists all of the netCDF files in the current directory%--------------------------------------------------------------------%     Copyright (C) J. V. Mansbridge, CSIRO, january 24 1992%     Revision $Revision: 1.7 $%% DESCRIPTION:% whatnc lists all of the netCDF files (including compressed ones) in% the current directory.  It also lists all of the netcdf files in the% common data set.%% Note: the path for the common data set is found by a call to pos_cds.%% INPUT:% none%% OUTPUT:% messages to the user's terminal%% EXAMPLE:% Simply type whatnc at the matlab prompt.%% This function calls: pos_cds, message_for_whatnc% This function is called by:%% AUTHOR:   J. V. Mansbridge, CSIRO%---------------------------------------------------------------------%     Copyright (C), J.V. Mansbridge, %     Commonwealth Scientific and Industrial Research Organisation%     $Id: whatnc.m Mon, 03 Jul 2006 17:16:40 $% %--------------------------------------------------------------------% 1) current directory netCDF filesdir_name = '.';dir_list = dir(dir_name);string_list = {'.nc', '.cdf'};num_strings = length(string_list);for jj = 1:num_strings  len_string(jj) = length(string_list{jj});endnames = {};count = 0;len = zeros(length(dir_list), 1);for ii = 1:length(dir_list)  if ~dir_list(ii).isdir    for jj = 1:num_strings      if length(dir_list(ii).name) > len_string(jj)	if strcmp(dir_list(ii).name((end - len_string(jj) + 1):end), ...		  string_list{jj})	  count = count + 1;	  names{count} = dir_list(ii).name;	  len(count) = length(names{count});	end      end    end  endendmaxlen = max(len);disp(' ')disp('-----  current directory netCDF files  -----')print_list(names, count, maxlen)% 2) current directory compressed netCDF filesstring_list = {'.nc.Z', '.cdf.Z', '.nc.gz', '.cdf.gz'};num_strings = length(string_list);for jj = 1:num_strings  len_string(jj) = length(string_list{jj});endnames = {};count = 0;len = zeros(length(dir_list), 1);for ii = 1:length(dir_list)  if ~dir_list(ii).isdir    for jj = 1:num_strings      if length(dir_list(ii).name) > len_string(jj)	if strcmp(dir_list(ii).name((end - len_string(jj) + 1):end), ...		  string_list{jj})	  count = count + 1;	  names{count} = dir_list(ii).name;	  len(count) = length(names{count});	end      end    end  endendmaxlen = max(len);disp(' ')disp('-----  current directory compressed netCDF files  -----')print_list(names, count, maxlen)% 3) common data set of netCDF filesdir_name = pos_cds;if exist(dir_name, 'dir')  dir_list = dir(dir_name);  string_list = {'.nc', '.cdf'};  num_strings = length(string_list);  for jj = 1:num_strings    len_string(jj) = length(string_list{jj});  end  names = {};  count = 0;  len = zeros(length(dir_list), 1);  for ii = 1:length(dir_list)    if ~dir_list(ii).isdir      for jj = 1:num_strings	if length(dir_list(ii).name) > len_string(jj)	  if strcmp(dir_list(ii).name((end - len_string(jj) + 1):end), ...		    string_list{jj})	    count = count + 1;	    names{count} = dir_list(ii).name;	    len(count) = length(names{count});	  end	end      end    end  end  maxlen = max(len);  disp(' ')  disp('-----  common data set of netCDF files -----')  print_list(names, count, maxlen)end% 4) look for a message to be added to which.disp(' ')disp('--------------------------------------------')try  mess = message_for_whatnc;  if ischar(mess)    disp(mess)  elseif iscell(mess)    for ii = 1:length(mess)      if ischar(mess{ii})	disp(mess{ii})      end    end  endendfunction print_list(names, count, maxlen)  if count > 0    str_blank = repmat(' ', 1, 50);    if maxlen < 10      lim = 10;      ncols = 7;    elseif maxlen < 12      lim = 12;      ncols = 6;    elseif maxlen < 15      lim = 15;      ncols = 5;    elseif maxlen < 18      lim = 18;      ncols = 4;    elseif maxlen < 25      lim = 25;      ncols = 3;    elseif maxlen < 37      lim = 37;      ncols = 2;    else      lim = -1;    end    if lim > 0      nrows = ceil(count/ncols);      str = repmat(' ', nrows, ncols*lim);      xx = zeros(ncols, nrows);      xx(1:count) = NaN;      xx = xx';      ff = find(isnan(xx));      [ii, jj] = ind2sub([nrows ncols], ff);       for kk = 1:count	jst = (jj(kk) - 1)*lim + 1;	jfi = jst + length(names{kk}) - 1;	str(ii(kk), jst:jfi) = names{kk};      end      disp(str)    else      for ii = 1:count	disp(names{ii})      end    end  else    disp('EMPTY')  endfunction print_list_opposite(names, count, maxlen)  if count > 0    str_blank = repmat(' ', 1, 50);    if maxlen < 10      lim = 10;      str = [];      for ii = 1:count	str = [str names{ii} str_blank(1:(lim - length(names{ii})))];	if rem(ii, 7) == 0	  str = [str '\n'];	end      end      disp(str)    else      for ii = 1:count	disp(names{ii})      end    end  else    disp('EMPTY')  end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -