24小时热门版块排行榜    

CyRhmU.jpeg
查看: 501  |  回复: 4
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

zhanghcui

木虫 (小有名气)

[交流] 【求助】 matlab 符号转化double

各位高人, 怎样把符号表达式转变为double表达式
下面是我的主程序和出错提示:
syms x y z1 z2
m=3
n=3
h=0.0003;
w=0.0005;
a=0.0001
e=h/w
%z1=@pp
ff=sym(zeros(m,n))
for i=1:m
   %feval(z1,x,y,i)
   z1=x.^i+y.^i
    for j=1:n
       % z2=@pp
        %feval(z2,x,y,j)
        z2=x.^j+y.^j
        z1x=diff(z1,x)
        z2x=diff(z2,x)
        z1y=diff(z1,y)
        z2y=diff(z2,y)
        ff(i,j)=e^2*z1x*z2x+z1y*z2y
        ff(i,j)=char(ff(i,j))
        ff(i,j)=strrep(ff(i,j),'*','.*')
        ff(i,j)=strrep(ff(i,j),'/','./')
        ff(i,j)=strrep(ff(i,j),'\','.\')
        ff(i,j)=strrep(ff(i,j),'^','.^')
       ss=intout(ff(i,j),0,1,0,1)
    end
end
出错:
Warning: Inputs must be character arrays or cell arrays of strings.
> In zzz at 23
??? Error using ==> strrep
Conversion to double from sym is not possible.

Error in ==> zzz at 23
        ff(i,j)=strrep(ff(i,j),'*','.*')

[ Last edited by luoqiquan on 2009-12-19 at 18:14 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cutebear

新虫 (小有名气)

★ ★ ★ ★ ★
mingdong(金币+2,VIP+0):感谢您的帮助!
xuefei06(金币+3,VIP+0):感谢你给出这么详细的答案,希望对楼主有所帮助
syms x y z1 z2
m=3
n=3
h=0.0003;
w=0.0005;
a=0.0001
e=h/w
%z1=@pp
ff=sym(zeros(m,n))
for i=1:m
   %feval(z1,x,y,i)
   z1=x.^i+y.^i
    for j=1:n
       % z2=@pp
        %feval(z2,x,y,j)
        z2=x.^j+y.^j
        z1x=diff(z1,x)
        z2x=diff(z2,x)
        z1y=diff(z1,y)
        z2y=diff(z2,y)
        ff(i,j)=e^2*z1x*z2x+z1y*z2y
        ff(i,j)=char(ff(i,j))
        ff(i,j)=strrep(ff(i,j),'*','.*')
        ff(i,j)=strrep(ff(i,j),'/','./')
        ff(i,j)=strrep(ff(i,j),'\','.\')
        ff(i,j)=strrep(ff(i,j),'^','.^')
       ss=intout(ff(i,j),0,1,0,1)
    end
end
你去掉后面的几个转换

syms x y z1 z2
m=3
n=3
h=0.0003;
w=0.0005;
a=0.0001
e=h/w
%z1=@pp
ff=sym(zeros(m,n))
for i=1:m
   %feval(z1,x,y,i)
   z1=x.^i+y.^i
    for j=1:n
       % z2=@pp
        %feval(z2,x,y,j)
        z2=x.^j+y.^j
        z1x=diff(z1,x)
        z2x=diff(z2,x)
        z1y=diff(z1,y)
        z2y=diff(z2,y)
        ff(i,j)=e^2*z1x*z2x+z1y*z2y
        ff(i,j)=char(ff(i,j))

    end
end

输出结果是
ff =

[           34/25,     18/25*x+2*y, 27/25*x^2+3*y^2]
[     18/25*x+2*y, 36/25*x^2+4*y^2, 54/25*x^3+6*y^3]
[ 27/25*x^2+3*y^2, 54/25*x^3+6*y^3, 81/25*x^4+9*y^4]
不知道是不是你相要的,
你要是想吧*换成别的运算符号
你再做一个替代循环吧
另外intout有这个函数吗?你是不是写错了
4楼2008-12-05 15:16:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhanghcui 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见