我正在尝试创建一个列数等于所选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)];
答案 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