作者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/cn.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