# How to compare the values of 2 arrays vs each other?

49 views (last 30 days)
ESIDOR PASHAJ on 8 Mar 2018
Commented: ESIDOR PASHAJ on 8 Mar 2018
Hi guys, I am a bit of a noob at Matlab. What I want to do is compare the values of two arrays with each other to see what % similar are they? So, basically, if I have array A = (1,2,3,4) and array B = (1,2,5,6)...I would like to compare these two to each other using a function or something, and that function should state (in this case) that they are 50% similar. I would appreciate your help.

njj1 on 8 Mar 2018
What do you mean by "similar"? If you want simply see the number of entries that are the same, then this could do the trick:
s = A==B; %this is a boolean vector that will be 1 if the entries are the same and 0 if different
similarity = sum(s)/numel(s); this is the number of entries that are equal divided by the total number of entries

ESIDOR PASHAJ on 8 Mar 2018
The first method worked. Thank you very much. Can I ask you something else, how can I create an array that takes in values that are being fed from a variable that continuously changes values? Thanks
njj1 on 8 Mar 2018
I'll try to answer your question as best I can understand it. I'm guessing that you have a for loop in which a variable that is being calculated, and you want to store those calculated variables into a vector for future analysis.
stored_variable = zeros(number_of_computations,1); %pre-allocate for speed
for i=1:number_of_computations
variable1 = i^2 + 2*i + 5; %compute your changing variable here
stored_variable(i) = variable1;
end
You can actually bypass the first computation and go directly to the stored variable like:
stored_variable = zeros(number_of_computations,1); %pre-allocate for speed
for i=1:number_of_computations
stored_variable(i) = i^2 + 2*i + 5; %compute your changing variable here and store it
end
If you have a more specific problem, I might be able to provide a better answer.
ESIDOR PASHAJ on 8 Mar 2018
I worked around your answer and got to where I wanted to get. Thank you very much.