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
答案 0 :(得分:0)
.*
是元素明智的运算符,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文档中被称为扩展,它来自以下事实:较小的阵列在较大的阵列上“广播”或“扩展”,因此它们具有兼容的形状。在大多数情况下,这种扩展纯粹是象征性的,实际上并没有在范围内放置更多变量,而只是重复(重复使用)存在的变量。