MATLAB矩阵范围分配

时间:2015-10-02 07:40:46

标签: matlab matrix plot range histogram

是否可以将范围分配给矩阵。 如果您将下面的零矩阵视为'网格'用于绘图:

R = zeros(5,8);
R =
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

那么您可以将此矩阵视为网格,因此每个x轴零可以视为一个范围吗?例如,R(5,1)是范围0-0.1 secondsR(5,2)是范围0.1-0.2 seconds等。

范围的想法是否也可以应用于列?

这样做的目的是让我可以将已经组织成范围的单元数组数据读入零点矩阵以生成二维直方图。

Example of my output

2 个答案:

答案 0 :(得分:2)

假设您有时间tt和数据值val,其中val(i)包含时间tt(i)的数据值。在你的例子中你会有

tt  = [0.02, 0.22, 0.15, 0.08, 0.27, 0.09];
val = [0.5,  1.4,  2.5,  0.6 , 0.8,  0.3 ];

现在您需要表示所需时间和数据范围的向量(增加),例如

trange   = [0, 0.1, 0.2, 0.3, Inf];
valrange = [0, 1,   2,   3,   Inf];

现在您创建一个大小合适的矩阵

R = zeros(length(valrange), length(trange));

只需循环遍历

,即可轻松填充矩阵
for i=1:length(tt)
   %// We consider the pair tt(i), val(i)
   %// First find out, in which time range tt(i) lies:
   tind = find(trange > tt(i), 1, 'first');

   %// Now find out, in which value range val(i) lies:
   valind = find(valrange > val(i), 1, 'first');

   %// Now we increase the corresponding matrix entry
   R(valind,tind) = R(valind,tind) + 1;
end

请注意,第一列对应于-Inftrange(1)之间的时间范围,以及trange(end-1)trange(end)==Inf之间范围的最后一列。第一行和最后一行的Simliary。

答案 1 :(得分:0)

我不确定我是否理解你的问题。

如果你问,是否可以分配一个载体,例如a = [1;2;3],作为某个矩阵R = zeros(3, 5)中的列,然后可以通过

实现
R(:, 1) = a;
R(:, 2) = [4;5;6];