[討論] 如何打出a = 2 8 32 128 512

作者: dxdy (=ρdρdφ)   2019-02-06 16:44:48
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?
作者: rex0707 (我就是我)   2019-02-06 17:51:00
是不是因為你把這兩段code放在一起 所以a向量的大小跟上面的一樣 而且後面幾個元素的值沒變
作者: book5601 (蒼瀾野獸)   2019-02-06 20:04:00
先回覆陣列內有零的問題,我記得matlab不用在變數後面括弧也會自己儲存成陣列。所以你只要把a(n)的(n)整個刪除,再run一次應該就會有。第二個方法是直接把數值串聯,a=[a 2^n]; 這是matlab才有的寫法
作者: profyang (prof)   2019-02-06 21:20:00
請記得先用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:00
n = 1:10; a = 2 ^ nn = 1:2:10才對
作者: bcpsowen (pigbull)   2019-02-09 17:53:00
n=1:2:10a=2.^n矩陣運算比迴圈有效率 點乘蠻好用的
作者: tn00364361 (小氵斿)   2019-02-12 00:01:00
.^正解,速度快很多

Links booklink

Contact Us: admin [ a t ] ucptt.com