matlab-guide - 如何修复'内部矩阵尺寸必须一致
问题描述
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));
//Error using * //内部矩阵尺寸必须一致。
https://stackoverflow.com/questions/25778027/inner-matrix-dimensions-must-agree
解决方案
.*
是一个元素明智的运算符,randn(n)
返回一个大小为 n 的数组,0.5 是一个标量,matlab 不像 numpy 那样自动广播。
如果你想让每个元素都乘以 0.5,你可以直接这样做,如果你必须使用广播查看函数bsxfun(fun,A,B)
,但是bsxfun
容易出现内存问题,所以要小心。但它启用了强大的隐式扩展。
要了解更多关于bsxfun
访问https://www.mathworks.com/help/matlab/ref/bsxfun.html
如果这不能解决您的问题,您可能需要提供更多工作区中的代码或变量信息。
PS:广播在matlab文档中通常被称为扩展,它来自于较小的数组在较大的数组中“广播”或“扩展”,以便它们具有兼容的形状。在大多数情况下,这种扩展纯粹是象征性的,实际上并没有在范围内放置更多变量,而只是重复(重用)存在的变量。
推荐阅读
- postgresql - Postgres:“无法将 sql 模块加载到数据库集群中”等错误
- html - 如何在 Ion-card 上实现延迟加载
- docker - Dockerfile 中 EXPOSE 命令的目的是什么?
- java - Maven 抛出 java.lang.ClassNotFoundException: lombok.javac.handlers.HandleAccessors 即使我从项目中完全删除了 lombok?
- javascript - Jest 测试需要很长时间才能完成
- c# - RSA 加密返回奇怪的格式
- mongodb - Mongoose 不在 docker 内连接
- reactjs - 更改完成长时间操作后返回的组件
- elasticsearch - ElasticSearch 中文档的位置
- python - 为 boto 脚本提供的 XML 格式不正确