24小时热门版块排行榜    

查看: 1300  |  回复: 9

wanerlover

新虫 (初入文坛)

[求助] matlab中“.*”在公式中如何应用。 已有1人参与

x = 0:0.1:10;
for A = [-3  -2.5        -2        -1.5        -1 -0.5 0 ]
     a =      0.8504;
       b1 =       2.607 ;
       b2 =      0.0172 ;
       c =    -0.01287 ;
       d1 =     -0.3503;
       d2 =      0.4784 ;
       e =       2.823  ;

y=(a*(((A+b1+b2*x)^2)))*(1+c*x)*(d1*A+d2)*x/(1+e*(A+b1+b2*x))
hold on;plot(x,y)
end
编写代码的时候提示*错误。但是不明白应该把哪的*改成.*,都改成.*后,结果还是不对的。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖置顶 ( 共有2个 )

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
wanerlover: 回帖置顶 2016-05-08 18:46:03
wanerlover: 金币+5, ★★★★★最佳答案 2016-05-08 18:50:11
修改后:
y=(a*(((A+b1+b2*x).^2))).*(1+c*x).*(d1*A+d2).*x./(1+e*(A+b1+b2*x))

什么时候要加“点”,什么时候不加,这是使用MATLAB的基础问题。
对于“点”的使用,有些人完全不用“点”,有些人为了避免报错只要遇到 乘(*)、除(/)、幂(^)不加区分地一律加“点”;这两种方式,前者会导致报错,无法运算,后者尽管能规避报错,但是实质上还是没有完全理解用“点”和不用“点”的区别。

这个问题其实比较简单:首先搞清楚要处理的数据对象,是什么形式的,是单个数、数组、还是矩阵;然后要明白:
1 加(+)、减(-)
2 单个的数 与 单个的数乘、除、幂
3 矩阵与矩阵之间的乘、除、幂
4 单个数与矩阵乘、除
5 单个数乘以数组,数组乘以、除以单个数
以上5中情况,都是不加“点”的。

最后,数组与数组的乘、除、幂运算是要加“点”的。

按照上述原则,对自己输入的公式,按照运算的顺序,判断要操作的数据对象是什么形式的,即可实现正确判断。

以楼主的公式为例,图片中红框表示要加“点”的数组与数组的乘、除、幂运算,黑色框则表示不需要加“点”乘运算。请自行体会一下。


matlab中“.*”在公式中如何应用。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
9楼2016-05-08 11:05:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

引用回帖:
9楼: Originally posted by 月只蓝 at 2016-05-08 11:05:56
修改后:
y=(a*(((A+b1+b2*x).^2))).*(1+c*x).*(d1*A+d2).*x./(1+e*(A+b1+b2*x))

什么时候要加“点”,什么时候不加,这是使用MATLAB的基础问题。
对于“点”的使用,有些人完全不用“点”,有些人为了避免报错 ...

为了避免误导,我9楼的回复中,把“5 单个数与数组乘、除” 改成 “单个数乘以数组,数组乘以、除以单个数”;以及 “最后,数组与数组的乘、除、幂运算是要加“点”的。” 改成“最后,数组与数组的乘、除、幂运算,单个数除以数组是要加“点”的。”
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
10楼2016-05-08 11:14:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

lijunyuan87

新虫 (小有名气)

^2前面加点.^2。若还有问题,/前也加点./

发自小木虫Android客户端
2楼2016-05-08 09:53:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wanerlover

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by lijunyuan87 at 2016-05-08 09:53:52
^2前面加点.^2。若还有问题,/前也加点./

还是有问题
3楼2016-05-08 09:59:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bugu5211

铁杆木虫 (正式写手)

矩阵之间用点乘,表示相应元素相乘。

发自小木虫Android客户端
4楼2016-05-08 10:08:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wanerlover

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by bugu5211 at 2016-05-08 10:08:28
矩阵之间用点乘,表示相应元素相乘。

y=(a*((A+b1+b2*x).^2)).*(1+c*x).*((d1*A+d2)*x)/(1+e*(A+b1+b2*x)),像这样换成点乘,求出来成了一个具体的数了,这是为什么呢?
5楼2016-05-08 10:12:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhanwl

金虫 (正式写手)

6楼2016-05-08 10:19:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhanwl

金虫 (正式写手)

wanerlover: 回帖置顶 2016-05-08 10:48:00
wanerlover: 取消置顶 2016-05-08 18:45:43
直接用乘号是矩阵相乘,点乘是对应的元素相乘

发自小木虫Android客户端
7楼2016-05-08 10:20:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wanerlover

新虫 (初入文坛)

wanerlover: 回帖置顶 2016-05-08 10:47:49
wanerlover: 取消置顶 2016-05-08 18:45:51
这样写就对了,谢谢大家相助。
y=((a*((A+b1+b2*x).^2)).*(1+c*x).*((d1*A+d2)*x))./(1+e*(A+b1+b2*x));
8楼2016-05-08 10:47:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wanerlover 的主题更新
信息提示
请填处理意见