Struct 从结构创建直方图
我在Octave v5.1.0中有一个结构,如下所示:Struct 从结构创建直方图,struct,histogram,octave,Struct,Histogram,Octave,我在Octave v5.1.0中有一个结构,如下所示: >> cal_data cal_data = scalar structure containing the fields: OG_0100 = 0.045260 -62.422000 0.044310 -60.768600 0.045000 -61.576600 0.044620 -61.303400 OG_0101 = 0.04
>> cal_data
cal_data =
scalar structure containing the fields:
OG_0100 =
0.045260 -62.422000 0.044310 -60.768600
0.045000 -61.576600 0.044620 -61.303400
OG_0101 =
0.044950 -61.316900 0.044110 -59.609500
0.045150 -62.235500 0.044380 -61.260800
OG_0102 =
0.045160 -61.609900 0.044550 -61.759800
0.044950 -61.725800 0.044480 -61.062300
等等。。。以递增方式命名为OG_0280的字段。每个字段都是相同的,由2x4双精度数组组成
我想为struct中所有字段中的8个值中的每一个创建一个柱状图,我被卡住了
我尝试了以下方法,但没有成功:
>> hist([cal_data])
error: hist: Y must be real-valued
error: called from
hist at line 90 column 5
由于每个struct元素的大小相同,因此将它们存储为单个三维阵列将更高效、更灵活。此代码将当前结构转换为以下数组: cal_data.OG_0100=[ 0.045260 -62.422000 0.044310 -60.768600 0.045000 -61.576600 0.044620 -61.303400]; cal_data.OG_0101=[ 0.044950 -61.316900 0.044110 -59.609500 0.045150 -62.235500 0.044380 -61.260800]; cal_data.OG_0102=[ 0.045160 -61.609900 0.044550 -61.759800 0.044950 -61.725800 0.044480 -61.062300]; data=struct2cellcal\u数据; 数据=重塑数据,1,1,[]; 数据=cell2matdata; 数据:,:,1与cal_data.OG_0100相同。等等 然后,您可以通过首先重塑为二维矩阵来为每个值生成直方图,其中每列都是一个值,每行都是一个观察值,这需要转置。但是,由于每个值的范围非常不同,单个直方图可能并不理想。最好只画8个单独的直方图 数据=重塑数据,[],尺寸数据,3'; 历史数据
谢谢,成功了。我知道这些值有不同的范围,我要做两个直方图,一个用于第1列和第3列,另一个用于第2列和第4列。它们代表相同的数量。