作者dxdy (=ρdρdφ)
看板MATLAB
標題[討論] 如何打出a = 2 8 32 128 512
時間Wed Feb 6 16:44:48 2019
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://webptt.com/m.aspx?n=bbs/MATLAB/M.1549442693.A.10C.html
※ 編輯: dxdy (106.1.42.30), 02/06/2019 16:45:29
1F:→ rex0707: 是不是因為你把這兩段code放在一起 所以a向量的大小跟上 02/06 17:51
2F:→ rex0707: 面的一樣 而且後面幾個元素的值沒變 02/06 17:52
3F:→ book5601: 先回覆陣列內有零的問題,我記得matlab不用在變數後面括 02/06 20:04
4F:→ book5601: 弧也會自己儲存成陣列。所以你只要把a(n)的(n)整個刪除 02/06 20:04
5F:→ book5601: ,再run一次應該就會有。 02/06 20:04
6F:→ book5601: 第二個方法是直接把數值串聯,a=[a 2^n]; 這是matlab 02/06 20:07
7F:→ book5601: 才有的寫法 02/06 20:07
8F:推 profyang: 請記得先用zeors之類的給定a的size...程式前面最好加個 02/06 21:20
9F:→ profyang: clear; clc;之類的...至少我是習慣這樣做的 02/06 21:21
10F:→ profyang: 上面打錯 zeros 02/06 21:21
11F:推 sppmg: 插入0是因為陣列初始值為0,你第一個迴圈n=3時,陣列(2)未 02/06 23:43
12F:→ sppmg: 指定即為0。第二個迴圈問題則是因為剛剛的a沒清除,所以(5) 02/06 23:43
13F:→ sppmg: 之後都是舊的值。 02/06 23:43
14F:→ sppmg: 還有就是MATLAB在指定元素超出範圍時會即時配置一個新的陣 02/06 23:48
15F:→ sppmg: 列,然後再複製內容過去。所以a(100)=0是一個zeros之外的預 02/06 23:48
16F:→ sppmg: 配置記憶體的方法。(據說比較快) 02/06 23:48
17F:→ sppmg: a=[a, 2*n+1] 很方便,但效能較差,因為每次迴圈都要花費配 02/06 23:51
18F:→ sppmg: 置記憶體+複製內容的時間。 02/06 23:51
19F:推 sherees: n = 1:10; a = 2 ^ n 02/08 16:02
20F:→ sherees: n = 1:2:10才對 02/08 16:03
21F:推 bcpsowen: n=1:2:10 02/09 17:53
22F:→ bcpsowen: a=2.^n 02/09 17:53
23F:→ bcpsowen: 矩陣運算比迴圈有效率 點乘蠻好用的 02/09 17:53
24F:推 tn00364361: .^正解,速度快很多 02/12 00:01