Matlab 循环矩阵误差

Matlab 循环矩阵误差,matlab,for-loop,matrix,add,Matlab,For Loop,Matrix,Add,我正在写一些Matlab代码来分析尖峰和它们的刺激。在代码的第一部分,我得到了一个尖峰的时间,然后找到屏幕上显示的帧。然后,我想从该帧获取图像数据,并将其添加到我自己的电影数据中。myMovie和moviedata的x和y分量都是128x128,但是当我尝试将刺激moviedata(:,:,j)的某一帧的图像值添加到我的电影myMovie(:,:,k)中的特定帧时,我得到“错误:矩阵维度必须一致”。有办法解决这个问题吗 代码: find可能返回一个空矩阵,因此j也将为空。 在这种情况下,命令my

我正在写一些Matlab代码来分析尖峰和它们的刺激。在代码的第一部分,我得到了一个尖峰的时间,然后找到屏幕上显示的帧。然后,我想从该帧获取图像数据,并将其添加到我自己的电影数据中。
myMovie
moviedata
的x和y分量都是128x128,但是当我尝试将刺激
moviedata(:,:,j)
的某一帧的图像值添加到我的电影
myMovie(:,:,k)
中的特定帧时,我得到“错误:矩阵维度必须一致”。有办法解决这个问题吗

代码:


find
可能返回一个空矩阵,因此
j
也将为空。

在这种情况下,命令
myMovie(:,:,k)+double(moviedata(:,:,j))
尝试将128x128x1矩阵与128x128x0矩阵相加,从而得出错误。

可能是因为
find
在函数中查找多个满足条件的值。尝试通过执行
ind=find(…,1)只查找一个值,指定第二个参数1以仅查找一个匹配项。使用一些打印调试语句并查看
j
是什么。我的直觉是,
j
是不止一个值,因此当你试图引用你的
moviedata
结构时,你访问的是不止一个片段,这就是为什么你会得到维度错误。另外:
myMovie
moviedata
都是3D矩阵吗?将参数添加到
find
仍会导致错误消息
myMovie
为128x128x25,
moviedata
为128x128x18000。您确定
j
为您提供了一个值吗?这是代码中唯一允许MATLAB给出错误的地方。我只说一件事。这应该是解决问题的最好办法。此外,代码似乎不稳定。如前所述,
find
将返回满足条件的所有值。如果查找将返回一个以上的值,并且只期望返回一个值,则应该考虑是否有其他代码出错。如果find只返回一个值,则必须使用调试器检查矩阵的大小。另外,
j
是小于18000的整数值吗?如果
j
是整数,为什么需要舍入?
(t-(1/(25*10))
曾经是一个整数值吗?
t
是否有一个有限的十进制值?否则你什么也找不到。时间戳似乎来自您的设备,但这并不意味着它是1/f的倍数,其中f是您设备的采样频率。
for n=1:1100

   t = blocks(5).spikes{1}(:,n);

   for k=1:25
       ind = find(round(double(blocks(5).frameEpocs*1000)/1000) == (t-(1/(25*10))));
       j = blocks(5).frameEpocs(1,ind);
       myMovie(:,:,k) = myMovie(:,:,k) + double(moviedata(:,:,j));
   end

end