MATLAB:包含列向量的结构不会显示向量

时间:2014-05-22 15:14:54

标签: matlab vector

我已经定义了一个结构数组:

oRandVecs = struct('vV',{[],[]},...
               'ind_min',{[],[]},...
               'mean',{[],[]},...
               'vV_descending',{[],[]},...
               'largest_diff',{[],[]});

oRandVecs(1).vVoRandVecs(2).vv都会获得分配给它们的列向量。但问题是输出如下:

>> oRandVecs(1)

ans = 

           vV: [4x1 double]
      ind_min: 2
         mean: 6.5500
vV_descending: [4x1 double]
 largest_diff: 2.8000

它不是实际显示矢量,而是仅描述其类型。

我该怎么办?

2 个答案:

答案 0 :(得分:1)

原因是因为它太大而无法在屏幕上显示该结构:)如果您想要实际显示它,请使用dot表示法来显示您的数据。

换句话说,这样做:

 disp(oRandVecs(1).vV);

您也可以使用其他变量:

 disp(oRandVecs(1).vV_descending);

答案 1 :(得分:0)

answer by rayryeng可能是要走的路。

另一种方法是从结构转换为单元格,然后使用celldisp

celldisp(struct2cell(oRandVecs(1)))

示例:

>> oRandVecs = struct('vV',{[],[]},...
           'ind_min',{[],[]},...
           'mean',{[],[]},...
           'vV_descending',{[],[]},...
           'largest_diff',{[],[]}); %// define empty struct
>> oRandVecs(1).vV = (1:4).'; %'// fill some fields: column vector, ...
>> oRandVecs(1).mean = 5:7; %// ... row vector, ...
>> oRandVecs(1).vV_descending = randn(2,3); %// ... matrix
>> celldisp(struct2cell(oRandVecs(1)))
ans{1} =
     1
     2
     3
     4
ans{2} =
     []
ans{3} =
     5     6     7
ans{4} =
   0.016805198757746   0.236095190511728   0.735153386198679
   2.162769508502985  -0.158789830267017   0.661856091557715
ans{5} =
     []