Hi folks,
I'm looking to conduct a linear optimisation and was hoping for some help on the matter.
I have 56 columns of data, with 256 rows each; lets call this set A. I have another column of data, with 56 rows; lets call this set B. I essentially want to correlate each of the 256 values in each column of set A to a single value in set B; lets call this set C.
I want to know which of the 256 values across set C give the best correlation between sets A and B. In other words, which row in set A gives the best correlation to the corresponding value in set B, across all columns of set A.
Any help on this matter would be most appreciated!

 Réponse acceptée

Matt J
Matt J le 25 Jan 2022
Modifié(e) : Matt J le 25 Jan 2022
Diffs=abs(reshape(B,1,1,[])-A);
d=min(Diffs,[],3);
[Arows,Acols]=find(d==min(d(:)));

11 commentaires

Teshan Rezel
Teshan Rezel le 25 Jan 2022
@Matt J Hi, thanks for this! I'm just having an issue with the first line of your code as it says reshape doesn't work on tables...any ideas on how I can get around this please?
Matt J
Matt J le 25 Jan 2022
You can use table2array to convert them to ordinary matrices.
@Matt J Thank you! I tried that but now it throws out this error, although my data is in tables, not cells!
Operator '-' is not supported for operands of type 'cell'.
Matt J
Matt J le 25 Jan 2022
My solution assumes all variables are numeric matrices. If this isnt' the case for one/all of your variables, you need to convert them appropriately.
@Matt J I've made sure that all values in the tables are numeric, but it now says :
Error using tabular/reshape (line 216)
Undefined function 'reshape' for input arguments of type 'table'.
I'm not sure what's causing this now!
Matt J
Matt J le 25 Jan 2022
Modifié(e) : Matt J le 25 Jan 2022
I've made sure that all values in the tables are numeric
Again, they shouldn't be tables. They should be matrices. To convert tables to matrices, see table2array() which I mentioned earlier.
Teshan Rezel
Teshan Rezel le 31 Jan 2022
@Matt J thanks for this. I'm really not sure what I'm doing wrong as I've tried running the code snippet you sent me. I've attached the table that I think might be causing the issues. May I please ask you to have a look and tell me what I'm doing wrong? Apologies for this!
Matt J
Matt J le 31 Jan 2022
What about A?
Teshan Rezel
Teshan Rezel le 31 Jan 2022
@Matt J apologies, I've attached it as well!
Matt J
Matt J le 31 Jan 2022
Modifié(e) : Matt J le 31 Jan 2022
A=load('inputVariables').sum_Coke;
B=load('inputVariables').CRI;
B=B.CRI;
whos A B
Name Size Bytes Class Attributes A 256x54 110592 double B 54x1 432 double
Diffs=abs(reshape(B,1,1,[])-A);
d=min(Diffs,[],3);
[Arows,Acols]=find(d==min(d(:)));
whos Arows Acols
Name Size Bytes Class Attributes Acols 84x1 672 double Arows 84x1 672 double
Teshan Rezel
Teshan Rezel le 31 Jan 2022
@Matt J outstanding, thank you!

Connectez-vous pour commenter.

Plus de réponses (0)

Produits

Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by