Matlab使用向量时出现维度不匹配错误求助
Matlab使用向量时出现维度不匹配错误求助
嗨,我来帮你分析一下这个维度不匹配的问题~
首先看报错的核心原因:你左边的u(i)是单个标量元素,但右边的表达式计算出来的是一个向量,这就导致了Matlab报错“左右维度不兼容”。
具体来看出错的那一行:
u(i)= sum(9/(n^2*pi^2))*sin((n*pi)/3)*sin(((n*pi)/30)*x)*cos(((2*n*pi)/30)*t);
这里的x是你之前生成的长度为Nx+1的向量,当你计算sin(((n*pi)/30)*x)时,Matlab会对x的每个元素进行运算,返回一个和x同长度的向量。后续的乘法运算会保持向量维度,最终整个右边的结果是一个向量,但你试图把它赋值给单个位置u(i),这自然会报错。
解决方法很简单:
把表达式里的x改成x(i),这样就只会针对当前循环的第i个x值计算标量结果,和左边的u(i)维度匹配:
u(i)= sum(9/(n^2*pi^2))*sin((n*pi)/3)*sin(((n*pi)/30)*x(i))*cos(((2*n*pi)/30)*t);
另外提个小建议:当前你的n是标量(值为1),所以sum(9/(n^2*pi^2))里的sum其实没必要,直接写9/(n^2*pi^2)就可以,不过这不会影响代码运行,只是更简洁一点~
修改之后,你再运行代码应该就不会出现维度不匹配的错误啦。
备注:内容来源于stack exchange,提问作者acme_2020




