【发布时间】:2017-03-28 13:21:45
【问题描述】:
我正在编写 matlab 代码以沿一条线绘制正态分布样本。
为了让这个问题保持简单,我使用y=10 这一行。
A=randn(300,2);
x=A(:,1)';
y=A(:,2)';
x=[1.5*x(1:100)+5 1.5*x(101:200)+10 1.5*x(201:300)+15];
y=[1.5*y(1:100)+10 1.5*y(101:200)+10 1.5*y(201:300)+10];
plot(x,y,'Marker','.','LineStyle','none')
axis ( [ 1 20 1 20 ] ) ;
目标是这样的:
我的问题是,这段代码似乎效率很低,尤其是这两行:
x=[1.5*x(1:100)+5 1.5*x(101:200)+10 1.5*x(201:300)+15];
y=[1.5*y(1:100)+10 1.5*y(101:200)+10 1.5*y(201:300)+10];
然而,在我的实际代码中,这将扩展为类似
x=[1.5*x(1:100)+5 1.5*x(101:200)+10 1.5*x(201:300)+15 1.5*x(301:400)+20 1.5*x(401:500)+25 ................];
有没有一种方法可以通过使用循环或矢量化来提高效率?我试图了解如何做到这一点,但我只能找到简单的例子。我无法理解如何使用两个变量进行迭代,一个在范围部分 x(201:300)....x(301:400) 中,一个在附加部分 +15...+20
另外,我用来沿着一条线绘制正态分布样本的这种技术是正确的技术,还是有更好/更简单的方法?
【问题讨论】:
-
为什么你认为这些行效率低下?这是一个小范围的矢量化代码,所以它应该非常快。
-
@SembeiNorimaki:这只是一个示例代码,在我的实际代码中,范围可能会超过数千。