声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2480|回复: 16

[编程技巧] 分段函数

[复制链接]
发表于 2010-9-26 14:24 | 显示全部楼层 |阅读模式

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

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

x
用 MATLAB 语言实现下面的分段函数
function y=fenduan(x)
if x>D
    fenduan(x)=h
elseif x>=-D
  fenduan(x)=h/(D*x)
else
   fenduan(x)=-h
end
  
请问我这样编哪里错了?
每次运行错误提示为:
??? Input argument "x" is undefined.

Error in ==> fenduan at 2
if x>D
回复
分享到:

使用道具 举报

发表于 2010-9-26 14:28 | 显示全部楼层
回复 8023ly 的帖子

1.算法的逻辑是不是有点问题
2.基础性的错误,建议看相关教材
3.分段函数也可以用f.*(x<1)+g.*(x>=1),等写法表示
 楼主| 发表于 2010-9-26 14:35 | 显示全部楼层
回复 qibbxxt 的帖子

实话说我的程序编写基础是很差的,不知道怎么提高。。。
发表于 2010-9-26 14:36 | 显示全部楼层
回复 8023ly 的帖子

function y=fenduan(x,D,h)
if x>D
    y=h
elseif x>=-D
  y=h/(D*x)
else
   y=-h
end

评分

1

查看全部评分

 楼主| 发表于 2010-9-26 14:39 | 显示全部楼层
回复 beyondhxf 的帖子

原来是函数定义这里错了,我还一直在地下找原因。。。谢谢啦
 楼主| 发表于 2010-9-26 15:26 | 显示全部楼层
回复 8023ly 的帖子

请问怎样编一个程序用来批量处理矩阵的相加呢?
发表于 2010-9-26 17:50 | 显示全部楼层
LZ注意下控制发言, 真想切换另一id处罚下:@)
 楼主| 发表于 2010-9-26 18:45 | 显示全部楼层
回复 Happy99 的帖子

我是新生嘛。。。一不小心就发了好多错的了
 楼主| 发表于 2010-9-26 18:45 | 显示全部楼层
回复 Happy99 的帖子

怎样把那些删掉呢?
发表于 2010-9-26 22:25 | 显示全部楼层
发表于 2010-9-26 22:27 | 显示全部楼层
8023ly 发表于 2010-9-26 15:26
回复 8023ly 的帖子

请问怎样编一个程序用来批量处理矩阵的相加呢?

matlab支持矩阵相加

如果两个矩阵维数一致,可以直接用加号相加

点评

赞成: 2.0
赞成: 2
Right  发表于 2010-9-26 23:05
发表于 2010-9-26 23:18 | 显示全部楼层
怎感觉LZ要的是如下, 不然不仅不连续且有一奇异点(sigular)
  1. function y=fenduan(x,D,h)
  2. if x>D, y=h;
  3. elseif x>=-D, y=h/D*x;
  4. else y=-h;
  5. end
复制代码
 楼主| 发表于 2010-9-27 12:10 | 显示全部楼层
回复 雪缘 的帖子

这个我倒是知道的,我想知道要编写这个程序的思想。感觉自己好像会,又不会。。。
 楼主| 发表于 2010-9-27 12:11 | 显示全部楼层
回复 Happy99 的帖子

对,我昨天也看了下题目,发现抄错了。。。谢谢指出!
 楼主| 发表于 2010-9-27 12:12 | 显示全部楼层
回复 雪缘 的帖子

是不是自己不能删除? 还要麻烦你过来删除啊?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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