声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1943|回复: 9

[编程技巧] 怎样给子程序的变量赋值?

[复制链接]
发表于 2007-9-5 20:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

[ 本帖最后由 eight 于 2007-9-5 20:31 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-9-5 20:32 | 显示全部楼层


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


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


  5. function z = myfun2(u,v)
  6. ....
复制代码

评分

1

查看全部评分

 楼主| 发表于 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的结果,然后在应用到后面的结果中继续运算,该怎么弄?谢谢.
 楼主| 发表于 2007-9-5 20:53 | 显示全部楼层
function WW_c=fuzhi(r,sta)
r=0.2;
sta=0;
WW_c=jifen(r,sta);
赋值我是这样弄的,可是在MATLAB中显示不对.真是郁闷死了.麻烦高手给说一下!
发表于 2007-9-5 21:06 | 显示全部楼层
原帖由 xiaoyuewei2001 于 2007-9-5 20:53 发表
function WW_c=fuzhi(r,sta)
r=0.2;
sta=0;
WW_c=jifen(r,sta);
赋值我是这样弄的,可是在MATLAB中显示不对.真是郁闷死了.麻烦高手给说一下!


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

function [r, sta] = jifen(r, sta)
 楼主| 发表于 2007-9-5 21:31 | 显示全部楼层
我的意思就是把jifen(r, sta)个表达式里面的r和sta赋值,就这个意思,求新的表达式然后在总程序中用.就是这个意思,可我就是变量赋不进去.
发表于 2007-9-5 21:45 | 显示全部楼层
将原问题贴一下吧.
另:function jifen(r,sta)中, r,sta你怎么又重新定义为符号变量了?
  还有,function fuzhi(r,sta)中, r,sta怎么又重新赋值了?
  从这点看,你的程序相当混乱.
 楼主| 发表于 2007-9-5 22:03 | 显示全部楼层
表达式先运算后赋值,赋值后再和其它的关系式运算后继续计算.

[ 本帖最后由 eight 于 2007-9-5 23:15 编辑 ]
发表于 2007-9-5 23:17 | 显示全部楼层
原帖由 xiaoyuewei2001 于 2007-9-5 22:03 发表
表达式先运算后赋值,赋值后再和其它的关系式运算后继续计算.



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

ps:同意 xjzuo 版主的观点,你的程序相当混乱,建议先认真阅读本版的基础贴子(置顶帖中有),或者找本基础书看看
 楼主| 发表于 2007-9-6 11:07 | 显示全部楼层
谢谢大家的关注,问题已经解决了,谢谢.
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-14 21:14 , Processed in 0.070794 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表