数学建模社区-数学中国
标题:
数学建模十类经典算法(10)
[打印本页]
作者:
百年孤独
时间:
2016-3-30 15:59
标题:
数学建模十类经典算法(10)
21、ndi***ength在多维数组中的注意事项
: N' p$ Q$ h+ v1 E- P; i) t/ ]
numel是用来查询矩阵所含元素总数的函数,例numel(A)
. Q, p5 l. L# }- S" y$ A( D" D
ndims是用来查询矩阵所含维数的函数,例ndims(A)
) s' s2 `# s5 [) X- `8 _7 n- S$ |
ndims(A(:,:,1))返回结果是2,因为A的第三维只有1维,那么实际上A只是一个二维矩阵;
. \2 u6 B! N5 s) \
length只能返回一维数组的长度,对于矩阵就必须用size将其化为一维数组之后再用length函数
; |. n( R. @6 r0 m
length(A)将得到size(A)的结果中较大的那一个元素;
% T. _6 z+ X6 f& @6 M. ~! y
length(size(A))才能得到A的维数;
6 s3 U: q Z% f1 I/ b6 a% |" N
- n3 K, T. M5 {: Z2 g+ V
22、创建单元数组(记得留意大括号{},等号两边至少要有一个大括号,否则会报错,因为单元数组能够容纳的内容要多,而数组中的元素只能容纳一个字符或数字,另外,单元中可以包含另一个单元)
) J9 w+ X* n. O8 v o+ E! ]7 h9 {
1、 单元索引法:
- n0 B/ E* O+ J. [! O5 _/ i
A(1,1)={[1 2 3 ;4 5 6;7 8 9]};
: ]. h: P( v y' ~4 F
A(1,2)={'example'};
; T6 C2 U* D/ i% x/ c
A(2,1)={1+2i};
/ @7 `: {9 k- z* v& y/ y i' P
A(2,2)={6:-1:1};
7 q. A% ? x5 [8 p$ ]0 T2 C& S
输出结果:
) _' B) N/ A3 J5 I
$ W/ i& u: i9 ^
A =
: I5 ]% t+ A" J/ t$ z9 p
1 Z* h: U0 ?0 q- i- ^8 S4 Z" N
[3x3 double] 'example'
7 I& T+ S' T4 Z/ q
[1.0000 + 2.0000i] [1x6 double]
, m+ W- z2 c! j' ~- e) V
I1 B# c: h1 H0 \2 l" D) a
2、 内容索引法:
! q, o5 R9 |) x# w- I/ O
A{1,1}=[1 2 3 ;4 5 6;7 8 9];
2 h; g. Q+ C4 c( f. d
A{1,2}='example';
+ }' L1 {) x( T2 r2 P9 E/ Y/ N; n
A{2,1}=1+2i;
) N! x+ Z* K5 ~$ [; E1 R
A{2,2}=6:-1:1;
8 M, \2 z, [9 j/ \- q( g- H! _
_! k4 F1 B/ r3 w, u1 r; i
A(I,j)={x}和A{I,J}=x都表明将x的值保存于单元数组A的第(I,j)个元素中。其中,前者A(I,j)={x}被称为“按单元索引”,后者A{I,J}=x被称为“按内容索引”。换句话说,花括号{}用于访问单元的值,而圆括号()用于标识单元的位置而不访问它们的值。
# u9 x' N' K8 Q" V* ^
例:
1 P. G* O' O y9 }
A{1,1}=[1 2 3 ;4 5 6;7 8 9]
# H2 H; p1 d& n" ]4 T( ^
A(1,1)=[ 3x3 double]
0 O' O6 V! l3 ~* Q: {9 b/ [$ D
花括号在等号左边时:可以对多个单元数组的数据进行输出;
$ @( m: i5 D) C3 {5 d/ B+ q2 y
例:A{1,:}=1:5,将会报错;错误原因是A{1,:}没有指定多少个单元数组将要被赋值
4 h6 i) V* \7 t) p; z" \- w4 g: Y2 ~
花括号在等号右边时:可以对多个单元数组的数据进行输入;
3 {* V- A: A: I0 p; c" k) [
例:A(1,
={1:5},将会将A的第一行单元数组从左至右依次赋值为1、2、3、4、5;
3 _1 P. A- ?6 B1 ?& |
& k ^3 f2 j" \; f% \# _
celldisp(A)用于强制输出单元数组A中的内容,联想记忆:cell+disp--------display展示
6 i' T6 t* S7 }. Q3 e
cell(I,j)用于生成指定大小的空单元数组
% T$ H/ t0 D2 M: j2 T
9 G8 L9 }$ z" N- b% v+ j% @. Y, e
6 f9 Y: @+ A6 Z! v% ^
>> class(B{1,1})%按内容索引
9 l3 w& W; N4 t, U5 T J' U1 b; I) t
/ z+ _5 E# N8 T; ]
ans =
2 {" N* X1 w. d8 K, W
9 b9 n7 M1 [/ m2 U
double
% g0 Q3 Y$ }: X8 N/ } r' }- S
0 T% E$ [3 o5 y( D9 B/ q
>> class(B(1,1))%按单元索引
+ U/ m) B# p& K2 |+ n/ q; q
3 E2 k/ W$ {8 j9 y4 X
ans =
6 C0 x8 E g4 T6 B
" M" W+ d# |, d3 s9 I1 [6 h
cell
9 K1 `) c! ?/ ~8 S( I# P
由上面的例子可以看出“由单元索引”和“由内容索引”的结果是完全不同的,“按单元索引”得到的是单元的标识(即单元里是什么类型的值),“按内容索引”得到的是单元的内容(即单元里是什么值)
' V8 O3 P; [+ w0 c; Y B
. M: U+ C0 R4 A0 N
' Q8 |2 z. t7 w4 a
; |' L& N+ F1 u: d8 O
, l5 ?* `6 A5 H+ t8 [
6 X2 r+ L' ^( k/ }' z7 D2 }6 A) u
6 g) I/ ?& S% e. s
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5