2017-07-10 64 views
1

我試圖將包含整數標籤值的2D矩陣的所有條目映射到使用映射的新值。這裏是一個玩具的例子:Matlab:使用地圖將整數標籤矩陣值高效映射到新值

a = randi(4,3,3)  % Initial matrix with random values between 1 and 4 
b = zeros(size(a)) % Initialization of output matrix 
map_old = (1:4);  % Old label values 
map_new = [1 1 2 2]; % New label values 

% Loop through all new labels and replace old values with new ones using 'ismember' function 
for i = 1:max(map_new) 
    label_idx = map_new == i; 
    label_selected = map_old(label_idx); 
    b(ismember(a,label_selected)) = i; 
end 

我想這不是最有效的方式來做到這一點。是否有任何技巧或任何現有的功能,在Matlab中更有效地做到這一點?

回答

1

您可以使用索引:

b = map_new(a) 
+0

尼斯。我不知道可以像這樣使用索引。謝謝 – mcExchange