MATLAB
允许用其他数组索引数组。
通常结果具有相同的大小,但显然情况并非总是如此。
它必须与“列优先级”中的“列优先级”有关MATLAB
。
问题:
我想知道如何找到关于如何进入的一致解决[1 1]
方案
size(index_array)==size(array(index_array))
适用于所有尺寸的index_array
.
具体来说,我发布了一个示例脚本:
baseAlt = [ 0, 11000, 20000, 32000, 47000, 51000, 71000 ];
xRow = 10000*[ 1, 2, 3, 4, 5];
xCol = 10000*[ 1; 2; 3; 4; 5];
xSq = 20000* rand(5);
reg = arrayfun( @(alt) sum(alt>=baseAlt), xRow);
ans1 = baseAlt(reg);
disp(all(size(baseAlt(reg))==size(reg))); %ans=2
reg = arrayfun( @(alt) sum(alt>=baseAlt), xSq);
ans2 = baseAlt(reg);
disp(all(size(baseAlt(reg))==size(reg))); % ans=2
%BUUUUT
reg = arrayfun( @(alt) sum(alt>=baseAlt), xCol);
ans3 = baseAlt(reg);
disp(all(size(baseAlt(reg))==size(reg))); % row, instead of column
% zero when comparing size
%MOREOVER
reg = arrayfun( @(alt) sum(alt>=baseAlt), xCol);
ans4 = baseAlt([reg,reg]);
disp(all(size(baseAlt([reg,reg]))==size([reg,reg]))); % we get true here
如您所见,所有矩阵都保留了索引矩阵的形状,与ROW被 COL 索引的情况不同。任何人都可以阐明这一点吗?
编辑 1:使用“all”而不是“sum”,正如 Dani 指出的那样,这里更加优雅。