gpt4 book ai didi

matlab - 如何在 Matlab 中替换向量中的多个元素?

转载 作者:太空宇宙 更新时间:2023-11-03 19:49:59 26 4
gpt4 key购买 nike

例如

我有一个向量:

a=[4 4 15 15 9 9 7 7];

如何高效地将所有 4 替换为 1,将所有 15 替换为 2,将 9 替换为 3,将 7 替换为 4?而不是重复编码:

a(a==4)=1; a(a==15)=2; a(a==9)=3; a(a==7)=4; ....

万一我的号码太多要替换呢?

非常感谢!

最佳答案

如果你真的想要一个“任意”替换,原始值和替换值之间没有直接关系,你可以使用 ismember:

>> map = [4 1; 15 2; 9 3; 7 4];
>> [~, loc] = ismember(a, map(:,1));
>> a(:) = map(loc,2)

a =

1 1 2 2 3 3 4 4

根据更大的上下文,您可能需要检查 unique,因为看起来您在做类似的事情。例如在这种情况下:

>> [~,~,a2] = unique(a, 'stable')

a2 =

1 1 2 2 3 3 4 4

这适用于您的示例,并且不需要您构建 map ,因为它会根据出现的顺序制作自己的 map 。

或者,如果您的 Matlab 版本早于 unique` 的 'stable' 属性,则

>> [~,~,a2] = unique(a)

a2 =

1 1 4 4 3 3 2 2

这类似于您的替换,尽管这些数字指的是 a 中不同元素的 sorted 列表中每个元素的索引,而您的示例似乎使用未排序的索引 - 虽然这可能只是您示例的任意选择。

关于matlab - 如何在 Matlab 中替换向量中的多个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19811712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com