帮助计算循环中的语句

1视图(过去30天)
Ivan Mich.
Ivan Mich. 2021年4月12日
评论: rik. 2021年4月12日
你好,
我有一个代码有问题。我想计算一些数字,但我想通过循环“限制”我的结果。
我希望<1的值等于1,大于10的值等于10,其他值根据该等式计算:
x = x * 3.3 + 0.5。我写了这个代码,但它不使用
x = 5 + RANDN * 0.5
如果x <1
x == 1
eleesifx> 10
x == 10.
别的x>3
x==1.3*x-0.75
结尾
问题出在哪儿?
提前感谢你
2评论
Ivan Mich.
Ivan Mich. 2021年4月12日
很抱歉,但运行此代码STIN值最多为10。
这没有用

登录评论。

接受答案

斯蒂芬
斯蒂芬 2021年4月12日
最简单、最有效的解决方案是使用最小值和最大值:
x = 5 + RANDN(5,7)* 1.5;
x=x*1.3+0.5
X = 5×7.
7.6491 8.4519 8.8820 8.7385 9.8065 8.6945 8.5660 5.7131 13.1416 6.3650 9.1859 6.9860 9.4199 5.4750 8.8947 7.3018 6.4618 7.2714 9.2859 8.7553 5.7112 8.6327 5.6802 3.2153 9.5393 7.2815 7.1600 11.3087 6.1828 6.8579 9.3617 8.8780 4.6976 3.9478 7.3776
x = min(max(x,1),10)%这是您所需要的。
X = 5×7.
7.6491 8.4519 8.8820 8.7385 9.8065 8.6945 8.5660 5.7131 10.0000 6.3650 9.1859 6.9860 9.4199 5.4750 8.8947 7.3018 6.4618 7.2714 9.2859 8.7553 5.7112 8.6327 5.6802 3.2153 9.5393 7.2815 7.1600 10.0000 6.1828 6.8579 9.3617 8.8780 4.6976 3.9478 7.3776

更多答案(1)

rik.
rik. 2021年4月12日
编辑:rik. 2021年4月12日
问题是您假设MATLAB将分别处理X的每个元素。如果您使用循环,MATLAB只会这样做。
替代方案是使用逻辑索引来处理x作为数组。
L=x<1;
x(L)=1;
L=x>10;
x(L)=10;
L=x>3;
x(l)= 1.3 * x(l)-0.75;
4评论
rik.
rik. 2021年4月12日
在这种情况下,您应该使用代码斯蒂芬建议。
如果您有分段功能,您可以使用我建议的代码。

登录评论。

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始打猎吧!