数学建模社区-数学中国
标题:
数学建模十类经典算法(10)
[打印本页]
作者:
百年孤独
时间:
2016-3-30 15:59
标题:
数学建模十类经典算法(10)
21、ndi***ength在多维数组中的注意事项
% D! A6 K* U1 g) j
numel是用来查询矩阵所含元素总数的函数,例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$ j
length只能返回一维数组的长度,对于矩阵就必须用size将其化为一维数组之后再用length函数
2 w4 w# A+ t& s U; S: f8 o7 f
length(A)将得到size(A)的结果中较大的那一个元素;
1 X. A5 Q! Q- n( B. k
length(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) n
A(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- {. r
A(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 `$ {. [- v
A(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 C
A(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 O
ans =
* }; ?+ W9 T( C/ {/ S
H& F2 x' t1 U2 I2 H! x. q0 l, D5 P
double
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 w
cell
( 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 K
5 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