作者:
dxdy (=ρdρdφ)
2019-02-06 16:44:48for 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?
作者:
rex0707 (我就是我)
2019-02-06 17:51:00是不是因為你把這兩段code放在一起 所以a向量的大小跟上面的一樣 而且後面幾個元素的值沒變
先回覆陣列內有零的問題,我記得matlab不用在變數後面括弧也會自己儲存成陣列。所以你只要把a(n)的(n)整個刪除,再run一次應該就會有。第二個方法是直接把數值串聯,a=[a 2^n]; 這是matlab才有的寫法
請記得先用zeors之類的給定a的size...程式前面最好加個clear; clc;之類的...至少我是習慣這樣做的上面打錯 zeros
作者:
sppmg (sppmg)
2019-02-06 23:43:00插入0是因為陣列初始值為0,你第一個迴圈n=3時,陣列(2)未指定即為0。第二個迴圈問題則是因為剛剛的a沒清除,所以(5)之後都是舊的值。還有就是MATLAB在指定元素超出範圍時會即時配置一個新的陣列,然後再複製內容過去。所以a(100)=0是一個zeros之外的預配置記憶體的方法。(據說比較快)a=[a, 2*n+1] 很方便,但效能較差,因為每次迴圈都要花費配置記憶體+複製內容的時間。
作者:
sherees (ShaunTheSheep)
2019-02-08 16:02:00n = 1:10; a = 2 ^ nn = 1:2:10才對
作者:
bcpsowen (pigbull)
2019-02-09 17:53:00n=1:2:10a=2.^n矩陣運算比迴圈有效率 點乘蠻好用的