xiaoyuewei2001 发表于 2007-9-5 20:27

怎样给子程序的变量赋值?

我编了个程序,要求调用子程序后,给其中的变量赋值,然后再进行计算,谁告诉我怎么赋值呀?

[ 本帖最后由 eight 于 2007-9-5 20:31 编辑 ]

eight 发表于 2007-9-5 20:32

原帖由 xiaoyuewei2001 于 2007-9-5 20:27 发表 http://www.chinavib.com/forum/images/common/back.gif
我编了个程序,要求调用子程序后,给其中的变量赋值,然后再进行计算,谁告诉我怎么赋值呀?

跟普通的C语言没有什么两样的,例子:


function y = myfun1(x)
a = 1;
b = 2;
c = myfun2(a,b);


function z = myfun2(u,v)
....

xiaoyuewei2001 发表于 2007-9-5 20:50

function WW_c_q=jifen(r,sta)
r_b=0.4; %m
r_d=0.2; %m
syms r x tao_i ii sta jj
R_i_r=(sin(tao_i*r)-sinh(tao_i*r))+(-sin(tao_i*(r_b-r_d))-...
    sinh(tao_i*(r_b-r_d)))/(cos(tao_i*(r_b-r_d))+cosh(tao_i*(r_b-r_d)))*(cos(tao_i*r)-cosh(tao_i*r));
W_i_c=R_i_r.*cos((ii-1)*sta);
W_j_c=R_i_r.*cos((jj-1)*sta);
W_i_s=R_i_r*sin((ii-1)*sta);                                                                                                                                                                                                                           
W_j_s=R_i_r*sin((jj-1)*sta);
WW_c_q=[W_i_c+x*(diff(W_i_c,'r'));W_i_s+x*(diff(W_i_s,'r'));...
    W_i_c*W_j_c;W_i_c*(diff(W_j_c,'r'))+(diff(W_i_c,'r'))*W_j_c;(diff(W_i_c,'r'))*(diff(W_j_c,'r'));W_i_s*W_j_s;...
    W_i_s*(diff(W_j_s,'r'))+(diff(W_i_s,'r'))*W_j_s;(diff(W_i_s,'r'))*(diff(W_j_s,'r'))]

这是子程序
要得到其中的r=0.2,sta=0的结果,然后在应用到后面的结果中继续运算,该怎么弄?谢谢.

xiaoyuewei2001 发表于 2007-9-5 20:53

function WW_c=fuzhi(r,sta)
r=0.2;
sta=0;
WW_c=jifen(r,sta);
赋值我是这样弄的,可是在MATLAB中显示不对.真是郁闷死了.麻烦高手给说一下!

eight 发表于 2007-9-5 21:06

原帖由 xiaoyuewei2001 于 2007-9-5 20:53 发表 http://www.chinavib.com/forum/images/common/back.gif
function WW_c=fuzhi(r,sta)
r=0.2;
sta=0;
WW_c=jifen(r,sta);
赋值我是这样弄的,可是在MATLAB中显示不对.真是郁闷死了.麻烦高手给说一下!

你的表达我没有看懂,我只能猜了:

function = jifen(r, sta)

xiaoyuewei2001 发表于 2007-9-5 21:31

我的意思就是把jifen(r, sta)个表达式里面的r和sta赋值,就这个意思,求新的表达式然后在总程序中用.就是这个意思,可我就是变量赋不进去.

xjzuo 发表于 2007-9-5 21:45

将原问题贴一下吧.
另:function jifen(r,sta)中, r,sta你怎么又重新定义为符号变量了?
  还有,function fuzhi(r,sta)中, r,sta怎么又重新赋值了?
  从这点看,你的程序相当混乱.

xiaoyuewei2001 发表于 2007-9-5 22:03

表达式先运算后赋值,赋值后再和其它的关系式运算后继续计算.

[ 本帖最后由 eight 于 2007-9-5 23:15 编辑 ]

eight 发表于 2007-9-5 23:17

原帖由 xiaoyuewei2001 于 2007-9-5 22:03 发表 http://www.chinavib.com/forum/images/common/back.gif
表达式先运算后赋值,赋值后再和其它的关系式运算后继续计算.


抱歉,我的理解能力实在有限,看不懂。如果希望“参数传递后返回时其值跟着发生改变”,则使用 global 全局变量的方式。

ps:同意 xjzuo 版主的观点,你的程序相当混乱,建议先认真阅读本版的基础贴子(置顶帖中有),或者找本基础书看看

xiaoyuewei2001 发表于 2007-9-6 11:07

谢谢大家的关注,问题已经解决了,谢谢.
页: [1]
查看完整版本: 怎样给子程序的变量赋值?