无法执行赋值,因为左侧的索引与右侧的大小不兼容。 出错 Untitled04 (第 32 行) spec(:, i) = abs(fft(frame, NFFT)).^2 / (NFFT * sum(win.^2))
时间: 2023-11-30 15:04:21 浏览: 86
这个错误可能是由于 `spec` 矩阵的维度不正确导致的。请检查 `spec` 的维度是否为 `(NFFT/2+1, length(t))`,如果不是,请使用以下代码将其初始化:
```matlab
spec = zeros(NFFT/2+1, length(t));
```
如果 `spec` 的维度已经正确初始化,请检查 `fft` 函数的输出是否与 `spec` 的第二个维度(即 `length(t)`)大小相同。如果不是,请检查 `buffer` 函数的参数是否正确,确保每一帧的长度为 `win_len`,并且每一帧之间的重叠长度为 `overlap_len`。如果仍然出现问题,请提供更多的代码和错误信息,以便我更好地帮助您解决问题。
相关问题
刚刚的代码出现错误无法执行赋值,因为左侧的索引与右侧的大小不兼容。 出错 Untitled (第 40 行) llr(:, 1) = -2*(received_signal+1);
这个错误通常出现在你试图将一个大小不同的向量或矩阵赋值给另一个向量或矩阵的某个子向量或子矩阵。在这种情况下,你需要检查一下左侧索引的大小是否与右侧向量或矩阵的大小相同。
具体来说,你需要检查 `llr` 和 `received_signal` 的维度是否一致。如果它们的维度不同,你需要使用 reshape 或者其他方法来调整它们的大小。如果它们的维度一致,你需要确保左侧的索引的大小和右侧的向量或矩阵的大小也一致。
另外,你还需要检查一下 `llr` 是否已经被定义和初始化。如果没有被定义和初始化,你需要在赋值之前先对 `llr` 进行定义和初始化。
无法执行赋值,因为左侧的大小为 1×256,右侧的大小为 256×256。 出错 untitled2 (第 35 行) G(i, :) = noiseGate .* SNR ./ (1 + SNR);怎么改
你可以使用矩阵转置操作来解决这个问题,将右侧的矩阵转置为 256 行 1 列的矩阵,然后再进行赋值,即可保证左右矩阵的大小一致。修改后的代码如下:
```
G(i, :) = (noiseGate .* SNR ./ (1 + SNR))';
```
这里使用了单引号来进行转置操作,将右侧矩阵转置为列向量,然后再进行赋值。注意,这里的转置操作只需要在右侧矩阵上进行,左侧矩阵不需要进行转置。
阅读全文