2014-12-05 60 views
0

下面的代碼產生一個三角波:在MATLAB中隨機改變三角波的斜率?

x=0:0.1:3; 
f=(mod(x,1)<=0.3).*(1-1/0.3.*mod(x,1))+(0.3<mod(x,1)).*(1/0.7.*(mod(x,1)-0.3)); 
plot(x,f) 

wave

我需要改變用於每個週期(1秒)的斜率(0.3值隨機地)。

例如

  • 0-1 = 0.4(隨機數)
  • 1-2 = 0.7(隨機數)
  • .......

回答

1

您可以使用rand(N,1)得到一個N元素列向量,其中每個元素是一個介於0和1之間的隨機數。將N設置爲您的「.......」帖子結尾。隨着每個循環「(1秒)」增加一個整數計數器並使用該計數器移動通過隨機數組。例如,如果計數器被稱爲「計數」,則使用rand(N,1)(count)而不是「0.3」。

+0

我該怎麼做「每個週期」(1秒)「增加一個整數計數器,並使用該計數器移動通過隨機數組」? – viz 2014-12-05 09:51:09

+0

從您的帖子中「秒」的位置不清楚,所以我不知道如何回答。 x應該是秒還是秒問題的其他部分,您正在循環但未顯示在代碼段中? – hft 2014-12-05 09:53:20

+0

如果x是秒,我想你可以在f函數定義中包含一些if語句來完成循環。類似地,「如果(x <1) a = rand(3,1)(1) end」,其中a是替換「0.3」的東西。等等。 – hft 2014-12-05 09:55:28