Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2011-01-15, 16:47   #1
xiaoyezi868
初级会员
 
注册日期: 2010-11-16
帖子: 8
声望力: 0
xiaoyezi868 正向着好的方向发展
问题 求助:subs 命令的应用

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 编辑。
xiaoyezi868 当前离线   回复时引用此帖
旧 2011-01-15, 19:54   #2
yhcode
高级会员
 
注册日期: 2008-05-13
年龄: 44
帖子: 232
声望力: 21
yhcode 正向着好的方向发展
默认 回复: 急求:subs 命令的应用

我的理解,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
yhcode 当前离线   回复时引用此帖
旧 2011-01-15, 20:02   #3
xiaoyezi868
初级会员
 
注册日期: 2010-11-16
帖子: 8
声望力: 0
xiaoyezi868 正向着好的方向发展
默认 回复: 急求:subs 命令的应用

引用:
作者: yhcode 查看帖子
我的理解,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})
您好,感谢您的来帖。用您的方法编程MATLAB 会出现以下的提示:
“??? Error using ==> sym.subs
Elements of the substitution cell array must be of the same size.”是不是因为size(y)=1 1
xiaoyezi868 当前离线   回复时引用此帖
旧 2011-01-15, 20:23   #4
yhcode
高级会员
 
注册日期: 2008-05-13
年龄: 44
帖子: 232
声望力: 21
yhcode 正向着好的方向发展
默认 回复: 急求:subs 命令的应用

S = sin(t)*y 提取t0和y0时,也就变成了S = sin(t0)*y0,这时候要满足矩阵乘法的要求的
__________________
工科'985'博士,(图像处理、分析及理解;模式识别;运动估计;数据分析等)定做程序、算法实现--qq:752105755
yhcode 当前离线   回复时引用此帖
旧 2011-01-16, 00:37   #5
xiaoyezi868
初级会员
 
注册日期: 2010-11-16
帖子: 8
声望力: 0
xiaoyezi868 正向着好的方向发展
默认 回复: 急求:subs 命令的应用

一个数和一个向量可以直接相乘的,MATLAB显示的结果最后是sin(t0)*y,而不是sin(t0)*y0,这是我最迷惑的。
xiaoyezi868 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 02:33


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.