查看: 81|回复: 8|关注: 0

[已答复] 简单的自定义函数返回值错误

[复制链接]

入门

90 麦片

财富积分


50500


0

主题

65

帖子

13

最佳答案
  • 关注者: 1
发表于 2019-12-2 22:07:33 | 显示全部楼层 |阅读模式
本帖最后由 hhh619 于 2019-12-2 22:09 编辑

一个很简单的函数文件计算错误
function y=myfun(x)
if x<0
    y=sin(x)*x;
else
    y=exp(x);
end
--------------------以下是在命令行输入-------------------------------
myfun(-6:1:6)   %正数部分计算正确,负数错误
ans =
    0.0025    0.0067    0.0183    0.0498    0.1353    0.3679    1.0000    2.7183    7.3891   20.0855   54.5982  148.4132  403.4288

myfun(1:6) %计算正确
ans =
    2.7183    7.3891   20.0855   54.5982  148.4132  403.4288

myfun(-6:1:-1)  %此时报错
错误使用  *
用于矩阵乘法的维度不正确。请检查并确保第一个矩阵中的列数与第二个矩阵中的行数匹配。要执行按元素相乘,请使用 '.*'。

出错 myfun (line 3)
    y=sin(x)*x;

-------------------若只计算一个数又没错--------------------------
>> myfun(-6)
ans =
   -1.6765
>> myfun(6)
ans =
  403.4288

---------------若吧函数*改为.*-----------------------------------
myfun(-6:6)%和上面一样错误
myfun(1:6),myfun(-6:1:-1)%得到的结果都正确
希望各位大神能解答我的疑惑



论坛优秀回答者

中级

640 麦片

财富积分


5001500


0

主题

302

帖子

51

最佳答案
  • 关注者: 10
发表于 2019-12-2 22:21:17 | 显示全部楼层
y=sin(x)*x;改为y=sin(x).*x;试试

入门

90 麦片

财富积分


50500


0

主题

65

帖子

13

最佳答案
  • 关注者: 1
 楼主| 发表于 2019-12-2 22:24:06 来自手机 | 显示全部楼层
20141303 发表于 2019-12-2 22:21
y=sin(x)*x;改为y=sin(x).*x;试试

我在问题最后写了把*改为.*的问题,还是有错

论坛优秀回答者

中级

640 麦片

财富积分


5001500


0

主题

302

帖子

51

最佳答案
  • 关注者: 10
发表于 2019-12-2 22:28:08 | 显示全部楼层
没错呀
微信图片_20191202222644.png

入门

90 麦片

财富积分


50500


0

主题

65

帖子

13

最佳答案
  • 关注者: 1
 楼主| 发表于 2019-12-2 22:34:10 | 显示全部楼层

我在最开始的问题中已经写了,*改为.*
myfun(-6:6)%和上面一样错误
myfun(1:6),myfun(-6:1:-1)%得到的结果都正确

论坛优秀回答者

中级

640 麦片

财富积分


5001500


0

主题

302

帖子

51

最佳答案
  • 关注者: 10
发表于 7 天前 | 显示全部楼层
hhh619 发表于 2019-12-2 22:34
我在最开始的问题中已经写了,*改为.*
myfun(-6:6)%和上面一样错误
myfun(1:6),myfun(-6:1:-1)%得到的结 ...

不应该
微信图片_20191203084358.png

入门

90 麦片

财富积分


50500


0

主题

65

帖子

13

最佳答案
  • 关注者: 1
 楼主| 发表于 7 天前 来自手机 | 显示全部楼层
20141303 发表于 2019-12-3 08:46
不应该

你运行得到的和我的一样,也是错的,只要有正数刘是按大于0计算的

论坛优秀回答者

中级

640 麦片

财富积分


5001500


0

主题

302

帖子

51

最佳答案
  • 关注者: 10
发表于 7 天前 | 显示全部楼层
抱歉,我理解错了,你看这个可行吗
微信图片_20191203094504.png

入门

90 麦片

财富积分


50500


0

主题

65

帖子

13

最佳答案
  • 关注者: 1
 楼主| 发表于 7 天前 | 显示全部楼层
20141303 发表于 2019-12-3 09:46
抱歉,我理解错了,你看这个可行吗

其实我只是有点奇怪为什么一个简单的函数得到的结果不对,想知道它是怎么算的,不过以后这样的问题也可以按你的这种方法写,总之要多注意这些错误
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

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