闲暇、偶然,杂乱、零碎、等等

『特注:此博客以转贴为主,大部分文章来自网络搜索,如果涉及版权,请及时告知,博主会及时撤下内容。』

2007年9月12日星期三

scilab布尔矩阵与向量

scilab布尔矩阵
布尔变量是指%t(表示真)和%f(表示伪),它们可以用于布尔矩阵中。布尔矩阵的操作和一般矩阵相同,例如可以连接、可以转置等。
对于布尔矩阵常用的操作符就是==和~,而且==和~还可以用于布尔矩阵的构造。
若B是一个布尔矩阵,or(B)和and(B)分别进行逻辑或运算和与运算。

-->%t
%t =
T
-->[1,2]==[1,3]
ans =
T F
-->[1,2]==1
ans =
T F
-->a=1:5; a(a>2)
ans =
3. 4. 5.
-->A=[%t,%f,%t,%f,%f,%f];
-->B=[%t,%f,%t,%f,%t,%t]
B =
T F T F T T
-->A|B
ans =
T F T F T T
-->A&B
ans =
T F T F F F

向量(Vectors)
生成向量的最常用方法就是在各个分量之间使用逗号(空格)隔开或者用分号隔开。
例如:
-->v=[2,-3+%i,7]
v =
2. - 3. + i 7.
-->v'
ans =
2.
- 3. - i
7.
-->w=[-3;-3-%i;2]
w =
- 3.
- 3. - i
2.
-->v'+w
ans =
- 1.
- 6. - 2.i
9.
-->v*w
ans =
18.
-->w'.*v
ans =
- 6. 8. - 6.i 14.

注意:向量的各分量之间使用逗号或者空格隔开时,生成的是行向量;而用分号隔开时,生成的是列向量。如:
-->v=[2,-3+%i,7]
v =
2. - 3. + i 7.
-->v=[2;-3+%i;7]
v =
2.
- 3. + i
7.

空矩阵[]也是合法的向量,它有零行零列:
-->Empty=[]
Empty =
[]

注意:单引号(')给出的是向量的转置(对于复向量,计算的是复共轭转置)。例如
-->A=[1,2,3]
A =
1. 2. 3.
-->A'
ans =
1.
2.
3.
-->A=[1+%i,2+2*%i]
A =
1. + i 2. + 2.i
-->A=[1+%i,2+2*%i,3+%i]
A =
1. + i 2. + 2.i 3. + i
-->A'
ans =
1. - i
2. - 2.i
3. - i
具有相同维数的向量之间可以相加和相减。具有相同维数的行向量和列向量之间也可以进行点积运算。逐个元素之间可以进行乘法(.*)和除法(./)。
注意:空格在不同位置所起到的作用也是不同的,例如:
-->v=[1 +3]
v =
1. 3.
-->w=[1 + 3]
w =
4.
-->w=[1+ 3]
w =
4.
-->u=[1, + 8- 7]
u =
1. 1.

如果要生成递增或递减的等差向量,可以采用如下的构造方法:

-->v=5:-.5:3
v =
5. 4.5 4. 3.5 3.
生成的向量以第一个值开始,第三个值结束,而第二个值则作为步长(即等差序列的差值),缺省的步长是1,如:
-->v=1:10
v =
1. 2. 3. 4. 5.
6. 7. 8. 9. 10.

常值序列可以使用ones函数和zeros函数生成,如
-->v=[1 5 6]
v =
1. 5. 6.
-->ones(v)
ans =
1. 1. 1.
-->ones(v')
ans =
1.
1.
1.
-->ones(1:4)
ans =
1. 1. 1. 1.
-->3*ones(1:4)
ans =
3. 3. 3. 3.
-->zeros(v)
ans =
0. 0. 0.
-->zeros(1:5)
ans =
0. 0. 0. 0. 0.
注意:当ones函数或zeros函数的变量是一个向量时,执行的结果是得到一个和该向量具有相同维数的全1或全0矩阵。

没有评论:

发表评论

愿与大家多交流分享。芸芸众生,相识即缘。。。 ^_^