【问题标题】:How to fix ‘Inner matrix dimensions must agree如何修复“内部矩阵尺寸必须一致”
【发布时间】:2019-01-24 08:41:35
【问题描述】:
s = 1000;
t = linspace(0,1,Fs);
x = cos(2*pi*100*t)+0.5.*randn(size(t));
fc = 150;
Wn = (2/Fs).*fc;
b = fir1(20,Wn,'low',kaiser(21,3));

//错误使用 * //内矩阵尺寸必须一致。

https://stackoverflow.com/questions/25778027/inner-matrix-dimensions-must-agree

【问题讨论】:

  • 有人建议将其更改为“。”即 y = exp(-x) * sin(x);像 y = exp(-x) .* sin(x);但仍然是同样的错误....任何人都可以帮忙吗?

标签: matlab-guide


【解决方案1】:

.* 是一个元素操作符,randn(n) 返回一个大小为 n 的数组,0.5 是一个标量,matlab 不像 numpy 那样自动广播。

如果你想让每个元素乘以0.5,你可以直接这样做,如果你必须使用广播查看函数bsxfun(fun,A,B),但是bsxfun容易出现内存问题,所以要小心。但它启用了强大的隐式扩展。

要了解更多关于bsxfun的信息,请访问https://www.mathworks.com/help/matlab/ref/bsxfun.html

如果这不能解决您的问题,您可能需要在工作区中提供更多代码或变量信息。

P.S:广播在 matlab 文档中通常被称为扩展,它来自于较小的数组在较大的数组中“广播”或“扩展”的事实,以便它们具有兼容的形状。在大多数情况下,这种扩展纯粹是象征性的,实际上并没有在作用域中添加更多变量,而只是重复(重用)存在的变量。

【讨论】:

  • Untitled3 中的错误(第 8 行)b = fir1(20,Wn,'low',kaiser(21,3));我没有在代码中找到错误,而在 firls 中出错(第 81 行) cos_ints = [omega; sin((1:N)' * omega)]
  • 您能否打印该语句之前所有矩阵的形状,如果您更新了代码,那么您所做的更新?
  • open Matlab--> Help--> Signal processing Toolbox ---> Tutorials --->Filtering Data With Signal Processing Toolbox Software,我正在学习,当我试图运行他们的代码时,它给我上面的错误
  • 我相信这就是你说的代码mathworks.com/help/signal/ug/…
  • 在我的系统中工作,你用过rng default吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-04
  • 2012-07-12
  • 2011-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多