[問題] 請教 diff 差分 和 用迴圈 的差異 已回收

看板MATLAB作者 (法蘭克)時間16年前 (2009/09/24 23:08), 編輯推噓0(0012)
留言12則, 2人參與, 最新討論串1/1
我是新手@@ 使用程式 matlab 7.1 我目前要做一個difference(差分)的方式 去使一個資料從原本的不穩定(nonstationary) 轉換成穩定(stationary) 資料是一個 a= 251 x 1 的array excel資料檔名為 01.xlsx a=xlsread('01.xlsx') b=diff(a,1) plot(b) % 差分一次 stationary 以上是我會的寫法 b=diff(a,1) 1代表做一次差分 如果改3 就是連做差分3次 a=xlsread('01.xlsx') b=zeros(250,1) for i=1:250 b(i)=a(i+1)-a(i) end plot(b) % 差分一次 stationary 這個寫法 我是想故意用 for 迴圈 去做上面的差分一次 那問題來了@@ 我想請問各位大大的是 如何用上述 for 迴圈 去做 diff(a,3) 可以做 到的事情呢? 因為我上面的for迴圈寫法 只能跑一次差分 請問如何跑很多次? 麻煩各位大大了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.165.94.147

09/24 23:50, , 1F
只想要三次的話 b(i)=a(i+3)-3*a(i+2)+3*a(i+1)-a(i)
09/24 23:50, 1F

09/24 23:51, , 2F
不過我一點都不推薦你用for做這件事.....
09/24 23:51, 2F

09/24 23:52, , 3F
解釋一下 你就想像第二次是c(i)=b(i+1)-b(i) 然後展開代入
09/24 23:52, 3F
※ 編輯: frank760417 來自: 118.165.94.147 (09/24 23:58)

09/24 23:58, , 4F
我把你的複製貼上 跑不出來呢
09/24 23:58, 4F

09/24 23:58, , 5F
Attempted to access a(252)
09/24 23:58, 5F

09/24 23:58, , 6F
index out of bounds because numel(a)=251.
09/24 23:58, 6F

09/25 02:06, , 7F
你不會用for也看不懂錯誤訊息嗎|||
09/25 02:06, 7F

09/25 02:07, , 8F
這樣說好了 a只有251個 b是差分三次 所以會少三個
09/25 02:07, 8F

09/25 02:07, , 9F
所以b只會有248個 那行for請改成 for i=1:248
09/25 02:07, 9F

09/25 02:09, , 10F
這樣在他最後一次呼叫a(i+3)的時候 會指向a(251) 不會越界
09/25 02:09, 10F

09/25 09:13, , 11F
恩恩 抱歉@@ 問那麼笨的問題 我才剛練習幾天@@
09/25 09:13, 11F

09/25 09:13, , 12F
感謝你的幫忙唷
09/25 09:13, 12F
文章代碼(AID): #1AkukBUq (MATLAB)
文章代碼(AID): #1AkukBUq (MATLAB)