看板 MATLAB 關於我們 聯絡資訊
for n=1:2:10 a(n)=2^n end 結果顯示 a = 2 0 8 0 32 0 128 0 512 要如何把0消掉? 我試了 for n=1:5 a(n)=2^(2*n-1) end 結果顯示 a = 2 8 32 128 512 0 128 0 512 為什麼512後面會跑出0 128 0 512? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.1.42.30 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1549442693.A.10C.html ※ 編輯: dxdy (106.1.42.30), 02/06/2019 16:45:29
rex0707: 是不是因為你把這兩段code放在一起 所以a向量的大小跟上 02/06 17:51
rex0707: 面的一樣 而且後面幾個元素的值沒變 02/06 17:52
book5601: 先回覆陣列內有零的問題,我記得matlab不用在變數後面括 02/06 20:04
book5601: 弧也會自己儲存成陣列。所以你只要把a(n)的(n)整個刪除 02/06 20:04
book5601: ,再run一次應該就會有。 02/06 20:04
book5601: 第二個方法是直接把數值串聯,a=[a 2^n]; 這是matlab 02/06 20:07
book5601: 才有的寫法 02/06 20:07
profyang: 請記得先用zeors之類的給定a的size...程式前面最好加個 02/06 21:20
profyang: clear; clc;之類的...至少我是習慣這樣做的 02/06 21:21
profyang: 上面打錯 zeros 02/06 21:21
sppmg: 插入0是因為陣列初始值為0,你第一個迴圈n=3時,陣列(2)未 02/06 23:43
sppmg: 指定即為0。第二個迴圈問題則是因為剛剛的a沒清除,所以(5) 02/06 23:43
sppmg: 之後都是舊的值。 02/06 23:43
sppmg: 還有就是MATLAB在指定元素超出範圍時會即時配置一個新的陣 02/06 23:48
sppmg: 列,然後再複製內容過去。所以a(100)=0是一個zeros之外的預 02/06 23:48
sppmg: 配置記憶體的方法。(據說比較快) 02/06 23:48
sppmg: a=[a, 2*n+1] 很方便,但效能較差,因為每次迴圈都要花費配 02/06 23:51
sppmg: 置記憶體+複製內容的時間。 02/06 23:51
sherees: n = 1:10; a = 2 ^ n 02/08 16:02
sherees: n = 1:2:10才對 02/08 16:03
bcpsowen: n=1:2:10 02/09 17:53
bcpsowen: a=2.^n 02/09 17:53
bcpsowen: 矩陣運算比迴圈有效率 點乘蠻好用的 02/09 17:53
tn00364361: .^正解,速度快很多 02/12 00:01