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)