Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2010-11-16
帖子: 8
声望力: 0 ![]() |
![]()
HELP 中有介绍:“subs(S,old,new),If old and new are cell arrays of the same size, each element of old is replaced by the corresponding element of new.”但是当old 和new 中有向量时总是出现错误,求求那位智者能给予解答!!!
syms t t0=1/3*pi; y=[2;2;2]; y0=[1;0;0]; S=sin(t)*y; subs(S,{t,y},{t0,y0}) ans = 3^(1/2) 3^(1/2) 3^(1/2) 答案应该是 3^(1/2)/2 0 0 ![]() 此帖于 2011-01-15 19:56 被 xiaoyezi868 编辑。 |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2008-05-13
年龄: 44
帖子: 232
声望力: 21 ![]() |
![]()
我的理解,subs里的old 和 new是这样的:
old 是 syms 定义的变量,而new是old的实例化,你的段程序里: y是一个实例,不是syms变量,因此,当你用t = sin(t0)*y;的时候,t的syms表示就是: [2*sin(t0);2*sin(t0);2*sin(t0)] 所以会得到你的那个结果,如果想得到你希望的结果,需要定义y为cell变量: syms t, y t0=1/3*pi; y0=[1;0;0]; S=sin(t)*y; subs(S,{t,y},{t0,y0})
__________________
工科'985'博士,(图像处理、分析及理解;模式识别;运动估计;数据分析等)定做程序、算法实现--qq:752105755 |
![]() |
![]() |
![]() |
#3 | |
初级会员
注册日期: 2010-11-16
帖子: 8
声望力: 0 ![]() |
![]() 引用:
“??? Error using ==> sym.subs Elements of the substitution cell array must be of the same size.”是不是因为size(y)=1 1 |
|
![]() |
![]() |
![]() |
#4 |
高级会员
注册日期: 2008-05-13
年龄: 44
帖子: 232
声望力: 21 ![]() |
![]()
S = sin(t)*y 提取t0和y0时,也就变成了S = sin(t0)*y0,这时候要满足矩阵乘法的要求的
__________________
工科'985'博士,(图像处理、分析及理解;模式识别;运动估计;数据分析等)定做程序、算法实现--qq:752105755 |
![]() |
![]() |
![]() |
#5 |
初级会员
注册日期: 2010-11-16
帖子: 8
声望力: 0 ![]() |
![]()
一个数和一个向量可以直接相乘的,MATLAB显示的结果最后是sin(t0)*y,而不是sin(t0)*y0,这是我最迷惑的。
|
![]() |
![]() |