matlab笔记4

B = A - 8.5
B(1:2,2:3) = 0
x = [2.1 1.7 1.6 1.5 NaN 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8];
x = x(isfinite(x))
x =
  2.1 1.7 1.6 1.5 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8
x = x(abs(x-mean(x)) <= 3*std(x))
x =
  2.1 1.7 1.6 1.5 1.9 1.8 1.5 1.8 1.4 2.2 1.6 1.8

find 函数可用于确定与指定逻辑条件相符的数组元素的索引。find 以最简单的形式返回索引的列向量。转置该向量以便获取索引的行向量。

k = find(isprime(A))'
k =
     2     5     9    10    11    13

R = randn(3,4,5);


MATLAB 中的元胞数组是以其他数组的副本为元素的多维数组
C = {A sum(A) prod(prod(A))}
。第一,要检索某个元胞的内容,请在花括号中使用下标。例如,C{1} 检索幻方矩阵,C{3} 为 16!。第二,元胞数组包含其他数组的副本,而不包含指向这些数组的指针

M = cell(8,1); 元胞数组
for n = 1:8
   M{n} = magic(n);
end
M

v = [s; 'world']
垂直联接字符并生成

v =
   Hello
   world

char 函数可执行这种填充操作。例如,
S = char('A','rolling','stone','gathers','momentum.')

也可以将文本存储在元胞数组中。例如,

C = {'A';'rolling';'stone';'gathers';'momentum.'}

可以将填充后的字符数组转换为字符向量元胞数组:
C = cellstr(S)
使用以下语句可以逆转此过程
S = char(C)


结构体是多维 MATLAB 数组,包含可按文本字段标志符访问的元素。例如,

S.name = 'Ed Plum';
S.score = 83;
S.grade = 'B+'

S = 
     name: 'Ed Plum'
    score: 83
    grade: 'B+'

可以一次添加一个字段,

S(2).name = 'Toni Miller';
S(2).score = 91;
S(2).grade = 'A-';

可以使用一个语句添加整个元素:

S(3) = struct('name','Jerry Garcia',... 
               'score',70,'grade','C')

键入
S.score
与键入
S(1).score, S(2).score, S(3).score
相同,这是一个逗号分隔列表。

scores = [S.score]
names = char(S.name)
names = {S.name}
[N1 N2 N3] = S.name

访问结构体数据的另一种方法是使用动态字段名称。这些名称将字段表示为变量表达式,MATLAB 会在运行时计算这些表达式。此处显示的点-括号语法将 expression 作为动态字段名称:
structName.(expression)
例如,要在字段名称中计算 expression,并在行 7 中的 1 至 25 列内获取该字段的值,请使用
structName.(expression)(7,1:25)