查看: 159|回复: 7|关注: 0

[已解决] 如何才能在原位置更新m呢 ?

[复制链接]

新手

17 麦片

财富积分


050


17

主题

50

帖子

0

最佳答案
m =[ 89.1935;87.5369;85.1605; 84.2143;81.9789; 76.1433;75.8123; 71.2154;70.7363;67.6988];
t=[1;3;5;6;8];
tl=[2;4;7;9;10];
如下是m更新的两个公式,如何使得m在t位置时候,按照第一个公式更新;是m在tl位置时候,按照第二个公式更新。
aa,cc都是随机数,0-1之间随机设定的
vf=[2.2;4.4;6.6;8.8;1.9;2.9;3.9;3.8;3.9;10.9];
dfmin=[1;2;3;4;5;6;7;8;9;10];
mm=90;
第一个公式:m=m+aa.*vf.*dfmin+cc*((rand(1)-0.5));
第二个公式:m=m+aa.*(mm-m);

新手

34 麦片

财富积分


050


3

主题

47

帖子

4

最佳答案
发表于 7 天前 | 显示全部楼层
假设m出现在第i个位置
a=find(t==i);
if a
m=m+aa.*vf.*dfmin+cc*((rand(1)-0.5));
else
m=m+aa.*(mm-m);
end

新手

17 麦片

财富积分


050


17

主题

50

帖子

0

最佳答案
 楼主| 发表于 7 天前 | 显示全部楼层
zqboy 发表于 2018-12-6 13:34
假设m出现在第i个位置
a=find(t==i);
if a

一次性可以输完所有的位置吗?就是不要我每次都去定义i是几

新手

19 麦片

财富积分


050


1

主题

28

帖子

3

最佳答案
  • 关注者: 1
发表于 7 天前 | 显示全部楼层 |此回复为最佳答案

syms aa cc
m =[ 89.1935;87.5369;85.1605; 84.2143;81.9789; 76.1433;75.8123; 71.2154;70.7363;67.6988];
t=[1;3;5;6;8];
tl=[2;4;7;9;10];
vf=[2.2;4.4;6.6;8.8;1.9;2.9;3.9;3.8;3.9;10.9];
dfmin=[1;2;3;4;5;6;7;8;9;10];
mm=90;
for i=1:10;
m=m+(aa.*vf.*dfmin+cc*((rand(1)-0.5)))*ismember(i,t)+aa.*(mm-m)*ismember(i,tl);
end

新手

17 麦片

财富积分


050


17

主题

50

帖子

0

最佳答案
 楼主| 发表于 7 天前 | 显示全部楼层
daydayout 发表于 2018-12-6 17:46
syms aa cc
m =[ 89.1935;87.5369;85.1605; 84.2143;81.9789; 76.1433;75.8123; 71.2154;70.7363;67.6988] ...

m=m+(aa.*vf.*dfmin+cc*((rand(1)-0.5)))*ismember(i,t)+aa.*(mm-m)*ismember(i,tl)
大神,能不能帮我大概解释下这句

新手

19 麦片

财富积分


050


1

主题

28

帖子

3

最佳答案
  • 关注者: 1
发表于 6 天前 | 显示全部楼层
若i在t中,ismember(i,t)=1, 另一个为0;
反之亦然。

新手

19 麦片

财富积分


050


1

主题

28

帖子

3

最佳答案
  • 关注者: 1
发表于 6 天前 | 显示全部楼层
还建议这样写
t=[1 3  5 6 8]'

新手

17 麦片

财富积分


050


17

主题

50

帖子

0

最佳答案
 楼主| 发表于 5 天前 | 显示全部楼层
daydayout 发表于 2018-12-7 12:55
还建议这样写
t=[1 3  5 6 8]'

嗯嗯  非常感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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