数学建模社区-数学中国

标题: 数学建模十类经典算法(10) [打印本页]

作者: 百年孤独    时间: 2016-3-30 15:59
标题: 数学建模十类经典算法(10)
21、ndi***ength在多维数组中的注意事项
! E1 ]6 G- G- n* J! q5 e8 Q) Tnumel是用来查询矩阵所含元素总数的函数,例numel(A)
: w1 w5 C+ i% U6 [% ^ndims是用来查询矩阵所含维数的函数,例ndims(A) # R/ t2 }4 {  h. {
ndims(A(:,:,1))返回结果是2,因为A的第三维只有1维,那么实际上A只是一个二维矩阵; " ?/ J: f$ u: a
length只能返回一维数组的长度,对于矩阵就必须用size将其化为一维数组之后再用length函数 & z3 H$ x& B  q6 C6 X( i
length(A)将得到size(A)的结果中较大的那一个元素;
+ I; |# Z/ M. Y: `/ ]" K5 _: slength(size(A))才能得到A的维数;
1 V; e& _! l7 z) Q* V' L, f' H" D' K5 {7 P
22、创建单元数组(记得留意大括号{},等号两边至少要有一个大括号,否则会报错,因为单元数组能够容纳的内容要多,而数组中的元素只能容纳一个字符或数字,另外,单元中可以包含另一个单元) 3 c: d6 w( ~) N9 m
1、 单元索引法:
; R; S8 M5 T/ z1 ]. x/ \( rA(1,1)={[1 2 3 ;4 5 6;7 8 9]};
+ Q1 V% t' f6 d% L: qA(1,2)={'example'}; $ N2 O9 g& u2 J$ y/ o4 c2 l' z- _; J
A(2,1)={1+2i}; $ O' g7 Q3 |; ~6 L; y  S- ^! e
A(2,2)={6:-1:1}; , r  D) T$ I/ R, ]' y; f
输出结果: 9 g0 O( m8 S" D, C3 Y- I4 _7 k

5 S6 G: k* [% SA = ! {* ]% G( U  n( Z

4 _3 h* K" F( Y[3x3 double] 'example'
9 h: _8 q5 z/ ~4 C- n[1.0000 + 2.0000i] [1x6 double] 2 I) Y% \+ `2 `

( q9 t, F, `7 A$ s5 n4 a2、 内容索引法: . v# t5 I9 H- f9 @' a
A{1,1}=[1 2 3 ;4 5 6;7 8 9]; $ k: L# A: ~6 m/ z
A{1,2}='example'; / ~) W4 A  l' v  J2 z) W" @  e
A{2,1}=1+2i; " W8 T! u/ L# Q/ h+ D( Z& v
A{2,2}=6:-1:1; ) ?) V9 `& U# C7 v( o; W/ m/ H! H3 B. ?
/ u+ d" E% I- X
A(I,j)={x}和A{I,J}=x都表明将x的值保存于单元数组A的第(I,j)个元素中。其中,前者A(I,j)={x}被称为“按单元索引”,后者A{I,J}=x被称为“按内容索引”。换句话说,花括号{}用于访问单元的值,而圆括号()用于标识单元的位置而不访问它们的值。
5 J( Q0 b5 H# t( ^7 L例: 8 n7 ~' e, Z; Y5 X6 A
A{1,1}=[1 2 3 ;4 5 6;7 8 9]
8 r# c* M8 k$ E4 c( ]) A8 mA(1,1)=[ 3x3 double] / T6 Z$ W. g/ _& N! J- `4 R% M4 U
花括号在等号左边时:可以对多个单元数组的数据进行输出; & w3 p  {# @' t
例:A{1,:}=1:5,将会报错;错误原因是A{1,:}没有指定多少个单元数组将要被赋值
% w+ _; ^. n0 }' R) ~花括号在等号右边时:可以对多个单元数组的数据进行输入; 8 V. t) S5 V0 @/ G
例:A(1,={1:5},将会将A的第一行单元数组从左至右依次赋值为1、2、3、4、5; / Q6 @' R! `7 ^5 k

/ }. ^, ^2 G5 ~* n: w3 ?% m3 E$ ~celldisp(A)用于强制输出单元数组A中的内容,联想记忆:cell+disp--------display展示
& Y. g: I  ]5 l. `/ f0 `7 {" bcell(I,j)用于生成指定大小的空单元数组 $ b9 S( X% {( N( ]9 r. _" ~

- ~/ C1 u, p" t7 [. R# {5 D: P  S, S$ K7 R8 k
>> class(B{1,1})%按内容索引 8 W5 F% k% T5 M$ x# R/ ]  Q
; ~/ s1 c' h& r/ O, y, s
ans =
! F! v- z9 E. ^7 Z2 Y+ ]) Z2 B
; f  E) T' A  H9 N4 M# S5 @' b+ qdouble $ t. D) V# p" T7 D0 T* b! e  w
  Q: t/ r, Y. }) i' h" s
>> class(B(1,1))%按单元索引 ; O+ B' v8 C! q" q- C  C

; s8 X6 W, C, F# sans =
) C  u* Q3 M' [0 p. W/ p5 J5 I: W8 p" p
cell
, M5 X- `$ F1 i; x3 i; [$ v# a0 {由上面的例子可以看出“由单元索引”和“由内容索引”的结果是完全不同的,“按单元索引”得到的是单元的标识(即单元里是什么类型的值),“按内容索引”得到的是单元的内容(即单元里是什么值)
& S/ _0 H; p7 H! A9 i
% u! J5 o9 L% z" T# b# Q

- {% h9 p8 q6 t$ U7 n% v' \* i5 W# X0 q, X2 ^
% u# i! k1 z3 Y7 I' G
# S4 E5 O! ~2 q4 [/ |9 Q
% N0 l5 i* Y5 I$ `% l, u2 Y5 {





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5