【发布时间】:2018-03-02 05:19:10
【问题描述】:
我是 Matlab 新手
我正在尝试对 2x3 数组 A 做一些事情:
- A的最大值加10;
- 将 A 的第二高值加 6
- 将 A 的第三高值加 4
- A的最小值加1
例如:
A = [13 14; 19 17; 54 33];
输出:[14 14; 23 17; 64 39];
有没有机会在不知道数组中元素的值的情况下实现这一点?
请帮忙
【问题讨论】:
我是 Matlab 新手
我正在尝试对 2x3 数组 A 做一些事情:
例如:
A = [13 14; 19 17; 54 33];
输出:[14 14; 23 17; 64 39];
有没有机会在不知道数组中元素的值的情况下实现这一点?
请帮忙
【问题讨论】:
在不知道元素的情况下,我们可以通过调用[~,I] = sort(___)获取它们的索引,然后调用A(I(k))在矩阵A中找到第k个数字。
[B,I] = sort(___) 将返回一个索引向量的集合 以前的语法。 I 与 A 大小相同,并描述了 将 A 的元素沿排序维度排列到 B 中。 例如,如果 A 是数值向量,则 B = A(I)。
%data
A = [13 14; 19 17; 54 33];
%sort
[~,index]=sort(A(:));
%add
A(index(end))=A(index(end))+10;
A(index(end-1))=A(index(end-1))+6;
A(index(end-2))=A(index(end-2))+4;
A(index(1))=A(index(1))+1;
A
参考:
doc sort
【讨论】:
help和doc是新手的绝佳指南。