2009-11-21 78 views

回答

3

对于您的问题,只需将数字转换为单元格即可。你将有一个数组编辑器可以处理的变量。

X = [ S num2cell(N) ]; 

更广泛地说,下面是一个面向阵列的sprintf变体,可用于显示从并行数组构造的记录。你会这样称呼它。我使用类似的东西来显示表格数据。

sprintf2('%-*s %8g', max(cellfun('prodofsize',S)), S, N) 

以下是函数。

function out = sprintf2(fmt, varargin) 
%SPRINTF2 Quasi-"vectorized" sprintf 
% 
% out = sprintf2(fmt, varargin) 
% 
% Like sprintf, but takes arrays of arguments and returns cellstr. This 
% lets you do formatted output on nonscalar arrays. 
% 
% Example: 
% food = {'wine','cheese','fancy bread'}; 
% price = [10 6.38 8.5]; 
% sprintf2('%-12s %6.2f', food, price) 
% % Fancier formatting with width detection 
% sprintf2('%-*s %6.2f', max(cellfun('prodofsize',food)), food, price) 

[args,n] = promote(varargin); 
out = cell(n,1); 
for i = 1:n 
    argsi = grab(args, i); 
    out{i} = sprintf(fmt, argsi{:}); 
end 

% Convenience HACK for display to command line 
if nargout == 0 
    disp(char(out)); 
    clear out; 
end 

function [args,n] = promote(args) 
%PROMOTE Munge inputs to get cellstrs 
for i = 1:numel(args) 
    if ischar(args{i}) 
     args{i} = cellstr(args{i}); 
    end 
end 
n = cellfun('prodofsize', args); 
if numel(unique(n(n > 1))) > 1 
    error('Inconsistent lengths in nonscalar inputs'); 
end 
n = max(n); 

function out = grab(args, k) 
%GRAB Get the kth element of each arg, popping out cells 
for i = 1:numel(args) 
    if isscalar(args{i}) 
     % "Scalar expansion" case 
     if iscell(args{i}) 
      out{i} = args{i}{1}; 
     else 
      out{i} = args{i}; 
     end 
    else 
     % General case - kth element of array 
     if iscell(args{i}) 
      out{i} = args{i}{k}; 
     else 
      out{i} = args{i}(k); 
     end 
    end 
end 
+0

+1将数字转换为单元格数组以在变量编辑器中查看它们。我从来没有使用变量编辑器,所以我只是将所有东西都转换为字符串以便在命令窗口中查看(我不使用单元格,因为包含长字符串的单元格有时不显示数据,或者他们搞乱了格式化)。 – gnovice 2009-11-23 16:47:40

+0

谢谢,你越来越接近我想要的东西。 – danatel 2009-11-24 22:40:14

5

以下应允许您在变量看一起在命令窗口:

disp([char(S) blanks(numel(N))' num2str(N)]); 

阵列S(我假定是一个单元阵列)被转换为使用函数CHAR的字符阵列。然后将其与空白列向量(使用函数BLANKS)进行连接,然后使用数字数组N(使用函数NUM2STR)进行字符串表示。然后使用功能DISP显示。

+0

谢谢你的帮助。 – danatel 2009-11-22 08:23:53

相关问题