Arrays 无法执行分配,因为左侧的索引与右侧的大小不兼容。这是什么意思?

Arrays 无法执行分配,因为左侧的索引与右侧的大小不兼容。这是什么意思?,arrays,matlab,for-loop,matrix,vector,Arrays,Matlab,For Loop,Matrix,Vector,无法执行分配,因为左侧的索引与右侧的大小不兼容。这是什么意思 错误 段(n_开始)=数据(n_开始:(n_开始+窗口大小-1)) 在文章中: segment(n_start)=data(n_start:(n_start+ window_size-1)); 您正试图将向量属性化为1x1矩阵 如果segment是一个向量,那么segment(n\u start)是它在n\u start位置的值,如果n\u start是一个整数,那么segment(n\u start)是1x1 另一方面,n\u s

无法执行分配,因为左侧的索引与右侧的大小不兼容。这是什么意思

错误 段(n_开始)=数据(n_开始:(n_开始+窗口大小-1))

在文章中:

segment(n_start)=data(n_start:(n_start+ window_size-1));
您正试图将向量属性化为1x1矩阵

如果
segment
是一个向量,那么
segment(n\u start)
是它在
n\u start
位置的值,如果
n\u start
是一个整数,那么
segment(n\u start)
是1x1

另一方面,
n\u start:(n\u start+window\u size-1)
是一个向量,从
n\u start
开始,一个接一个地增加,直到
(n\u start+window\u size-1)
。这取决于
操作符的工作方式。因为
window\u size=256*3
,所以它是一个767长的向量

调用
data(n\u start:(n\u start+window\u size-1))
时,您正在询问向量
n\u start:(n\u start+window\u size-1)中包含的索引中的所有数据值。


因此,在错误行中,您尝试将大小为767x1的向量分配到1x1矩阵。这就是它不起作用的原因。

您没有说错误是从哪里来的(始终包括整个错误消息),但我假设它位于分配
段(n_start)
的行上,您试图将768个元素向量拟合到单个数组元素中。我不认为那是你想做的。此外,还应检查变量名。您初始化
,但分配
。这些不一样。我希望每次循环迭代时都填充数组
segment=zero(4798768)
。谢谢,我理解了。你对解决这个问题有什么建议吗?我希望每次循环迭代时都填充数组段=零(4798768)。4798是段数,768是每个段中的元素数我不清楚您想要什么,但请注意您可以制作:
段(n_开始:(n_开始+窗口大小-1))=数据(n_开始:(n_开始+窗口大小-1))。这将覆盖以前写入的字段。您还可以考虑:
segment(n_start:(n_start+window_size-1))=segment(n_start:(n_start+window_size-1))+数据(n_start:(n_start+window_size-1))
segment(n_start)=data(n_start:(n_start+ window_size-1));