登录论坛

查看完整版本 : [求助]数组下标提取的疑问


wmch85
2008-05-14, 15:15
:biggrin:
程序:
A=1:100;
B1=isprime(A)
B2=A(isprime(A))
输出结果:
B1=
Columns 1 through 15

0 1 1 0 1 0 1 0 0 0 1 0 1 0 0
Columns 16 through 30

0 1 0 1 0 0 0 1 0 0 0 0 0 1 0
...............................................................
Columns 91 through 100

0 0 0 0 0 0 1 0 0 0
B2=
Columns 1 through 15

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47

Columns 16 through 25

53 59 61 67 71 73 79 83 89 97
我的问题是:
既然isprime(A)只能返回0和1两个值,那么A(isprime(A))的返回值要么是A(0),要么是A(1),即B2的值只能是不存在(A(0))或是1(A(1))
matlab里面是怎样分配的命令,才使凡是不为0的地方提取的值都是原来数组中对应位置的值??

回复为盼,先谢了!

andye
2008-05-15, 09:38
首先向受灾的人们祈祷.
A=1:100;
B1=isprime(A)
这步操作之后,B1的类型是 logica 而不是 double
l
B2=A(isprime(A))等价于 B2=A(B1);其中的下标是逻辑类型,那么matlab会追踪到原来的指数并显示。
如果增加一步
B1=double(B1); 类型改为double 型。你就会等到你分析出的结果。

wmch85
2008-05-15, 16:13
受益匪浅,谢谢了,andye