在Matlab中创建增加的bin

时间:2016-02-23 14:18:45

标签: arrays matlab bin

我正在尝试创建一个列数等于所选bin大小的数组。我希望数组中的每一行按顺序使用t中的值。例如,t以0.01秒的间隔从-4到4。如果bin宽度为6,我希望第1行为[-4 -3.99 -3.98 -3.97 -3.96 -3.95],然后第2行为[-3.99 -3.98 -3.97 -3.96 -3.95 -3.94] ...这将重复,直到最后一行为时= 4秒。我得到了代码开始工作,但是在得到下标分配不匹配错误之前我只进行了第364行。任何人都可以帮我解决这个错误吗?

bin_width = 6;
time_interval = 0.01;
t = -4:time_interval:4;
bin_number = bin_width/2;
t_bin = zeros(length(t),bin_width);

for n = 1:length(t)-bin_width
  t_bin(n,:) = [t(n):time_interval: t(n+bin_width-1)];
  bin_number = bin_number+1;
  n = n+1;
end

我得到的错误是

  

订阅的分配维度不匹配。

     

无标题错误(第15行)

t_bin(n,:) = [t(n):time_interval: t(n+bin_width-1)];

1 个答案:

答案 0 :(得分:2)

您遇到了浮点问题。在失败点

t(n):time_interval: t(n+bin_width-1)

ans =

   -0.3600   -0.3500   -0.3400   -0.3300   -0.3200

其中t(n + bin_width)-1 = -0.3100

这是一个解决方法。

bin_width = 6;
time_interval = 0.01;
t = -4:time_interval:4;
bin_number = bin_width/2;
t_bin = zeros(length(t),bin_width);

for n = 1:length(t)-bin_width
    t_bin(n,:)=linspace(t(n),t(n+bin_width-1),6)
end