# compare and sort element in two arrays in matlab?

11 ビュー (過去 30 日間)
Putri Basenda Tarigan 2020 年 11 月 19 日

Hello everyone,
I have two array
a=[3 1 2]
b=[2 3 1]
each element in each array has one value, that is c. for example c(a(1))=5, c(a(2))=6, c(b(1))=9 ,..
I want to compare the c value of the same number in array a and b.
So it's like I want to compare c(a(1)) to c(b(2)) ; c(a(2)) to c(b(3)); c(a(3)) to c(b(1)). then the maximum c values will be stored in a new array (array d) in ascending order.
after that make a new array 1x3 which indicate the corresponding number of the value in array d.
How to do this in matlab?
##### 2 件のコメントなしを表示なしを非表示
KALYAN ACHARJYA 2020 年 11 月 19 日

Sorry I don't get this question, c(a(1))=5, c(a(2))=6, c(b(1))=9 these values??
Putri Basenda Tarigan 2020 年 11 月 19 日
I mean there is one value of each element in each array, that is c. for example: c(a)=[5 6 4] ; c(b)=[9 3 2]

サインインしてコメントする。

### 回答 (2 件)

Ananthi Jegan 2020 年 11 月 19 日
I hope that the below lines of MATLAB code would help in arriving at the above requested solution.
% As per the above description, assuming unique values in arrays “a” and “b”
a = [3 1 2 6 4 5];
b = [2 3 1 5 6 4];
% "c" is assumed to have the same values in "a" and "b”
c = [1:6];
% Initialising the arrays “da” and “db” to store the indices from “a” and “b”
da = zeros(size(c));
db = zeros(size(c));
% Find the indices of values matching in “c” with “a” and “b”
for i = 1:numel(c)
da(i) = find(a==c(i));
db(i) = find(b==c(i));
end
% Find the max values from above arrays and store in “d_actual”
d_actual = max(da,db);
% Store the sorted values of “d_actual” in “d_sorted”
d_sorted = sort(d_actual);
% New array to find the corresponding value from “d_sorted”
new_array = d_actual(d_sorted);
##### 0 件のコメント-2 件の古いコメントを表示-2 件の古いコメントを非表示

サインインしてコメントする。

Nora Khaled 2020 年 11 月 19 日

Try this code... I hope I understood the problem correctly
clc;
clear all;
%function
c = @(x) x.^2;
%data
a=[3 1 2];
b=[2 3 1];
%merge data
md=[a;b];
mc=[c(a);c(b)];
% get postions of max values
[ind]=find(mc==max(mc));
% store max valus in d
d=mc(ind);
% get the corresponding values from a and b
cd=md(ind);
% sort d
[d,i]=sort(d);
% sort corresponding values from a and b using d
cd= cd(i);
% results:
disp('max of c in ascending order');
disp(d);
disp('corresponding data in ascending order');
disp(cd);

サインインしてコメントする。

### カテゴリ

Help Center および File ExchangeData Type Conversion についてさらに検索

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by