数学建模社区-数学中国

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

作者: 百年孤独    时间: 2016-3-30 15:59
标题: 数学建模十类经典算法(10)
21、ndi***ength在多维数组中的注意事项
% D! A6 K* U1 g) jnumel是用来查询矩阵所含元素总数的函数,例numel(A)
2 O8 U. t* h9 q  M% A8 W( n* }ndims是用来查询矩阵所含维数的函数,例ndims(A) % j* g- L( w! p! k' @
ndims(A(:,:,1))返回结果是2,因为A的第三维只有1维,那么实际上A只是一个二维矩阵;
- w$ B' f' {8 @9 r$ jlength只能返回一维数组的长度,对于矩阵就必须用size将其化为一维数组之后再用length函数
2 w4 w# A+ t& s  U; S: f8 o7 flength(A)将得到size(A)的结果中较大的那一个元素;
1 X. A5 Q! Q- n( B. klength(size(A))才能得到A的维数;) ]7 r5 [1 S9 U- `: \  [
( h2 u4 d8 k! p4 c; G; J
22、创建单元数组(记得留意大括号{},等号两边至少要有一个大括号,否则会报错,因为单元数组能够容纳的内容要多,而数组中的元素只能容纳一个字符或数字,另外,单元中可以包含另一个单元) - L9 C4 }  X# v4 C
1、 单元索引法:
$ N$ ~* a3 S; S9 l7 s! j) nA(1,1)={[1 2 3 ;4 5 6;7 8 9]};   Y  k* r' w1 w2 T3 G3 D+ O' a
A(1,2)={'example'};
; H7 v2 h% \9 o! N- {. rA(2,1)={1+2i}; , C. H& B  z. _2 b
A(2,2)={6:-1:1}; ; w8 v- \6 ]! v( W' H
输出结果:
7 P; h: F8 f9 F, `' g( j9 u! R5 z, h# L( R& X; v' N$ ]  K
A =
5 W; k: K4 ^4 P$ K1 Q3 Y' N3 V
; I; X9 P* K5 \[3x3 double] 'example' / k* T% _% v7 D8 m; k" X/ G, U. q
[1.0000 + 2.0000i] [1x6 double] # Q: ~, |: i* d$ Z. w! G
- d3 F8 ~3 d/ A$ y. C* H) L. r. }
2、 内容索引法: $ g- S6 b; J# q. t4 M+ L4 d' Z
A{1,1}=[1 2 3 ;4 5 6;7 8 9]; 5 E* d- I; Z' ]% x, n6 t( }$ Y
A{1,2}='example'; ' }7 v0 P' G' x; E/ |
A{2,1}=1+2i; - ?1 y2 |7 ~2 t
A{2,2}=6:-1:1; $ ^- e; A" L2 L% G; l6 W

4 L8 W% D7 `$ {. [- vA(I,j)={x}和A{I,J}=x都表明将x的值保存于单元数组A的第(I,j)个元素中。其中,前者A(I,j)={x}被称为“按单元索引”,后者A{I,J}=x被称为“按内容索引”。换句话说,花括号{}用于访问单元的值,而圆括号()用于标识单元的位置而不访问它们的值。 2 S/ u8 N# D0 g6 |! w
例: 5 \9 H: b6 I. Q' P; o
A{1,1}=[1 2 3 ;4 5 6;7 8 9]
# d8 g3 W0 H% ^5 }) @3 t+ @6 CA(1,1)=[ 3x3 double] 8 x' @1 o: ]: A) S
花括号在等号左边时:可以对多个单元数组的数据进行输出; ; l% q) t) Q# H4 @$ P
例:A{1,:}=1:5,将会报错;错误原因是A{1,:}没有指定多少个单元数组将要被赋值 + p$ X$ w' l" b) V5 ?# x+ k2 X  U
花括号在等号右边时:可以对多个单元数组的数据进行输入; 3 M1 v/ R  b) h  `/ y1 a
例:A(1,={1:5},将会将A的第一行单元数组从左至右依次赋值为1、2、3、4、5;
% I- c1 W6 v" h) U3 `( ^9 O1 V5 j( x/ A  R, O
celldisp(A)用于强制输出单元数组A中的内容,联想记忆:cell+disp--------display展示
6 U& J+ l2 r- o7 v' ]cell(I,j)用于生成指定大小的空单元数组
$ Y6 t9 K5 r% K2 K2 y, ?. I" K' \  T1 `1 b
! _- r+ `  F" ^3 K
>> class(B{1,1})%按内容索引
0 P+ j* P0 g$ L& }- g+ x! Z9 N
6 \- ?/ }8 r9 E# p5 j9 M9 Oans =
* }; ?+ W9 T( C/ {/ S
  H& F2 x' t1 U2 I2 H! x. q0 l, D5 Pdouble 5 w/ i# \5 A/ @8 r, X
, _& j" A4 H" y+ e5 H: X5 ^  o, K" D; d
>> class(B(1,1))%按单元索引 % z1 s4 V1 v% h- J
$ K6 c5 m1 y: }* Q. O& J
ans =
& a4 A+ O7 B! z1 M
8 P+ }  r) H( r( q0 G& {( K. D4 wcell
( b! z7 Z3 {* \0 @. T- V% f! p由上面的例子可以看出“由单元索引”和“由内容索引”的结果是完全不同的,“按单元索引”得到的是单元的标识(即单元里是什么类型的值),“按内容索引”得到的是单元的内容(即单元里是什么值)
  n6 }- v2 ?. h( ~6 M( F3 w* J
+ U7 `& }2 `- D0 e0 `! q
& C4 f; Y4 R# S% M( g3 X

* w4 Q* Z3 T6 g1 K5 d" m% q3 z1 q  Z# G: [

% [" A/ J, r3 r* {8 T1 L  U9 M5 U: p; H$ c/ s7 B





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