Question
I have a matrix A and a matrix B, with the same number of rows and a different number of columns. I need to calculate the correlation coefficient between each single columns of the matrix A and all the columns of the matrix B. For each column of A, the partial result will be an array, so I'm thinking to a matrix as final result. Is there a way to do this avoiding the "for" cycle? Which is the most efficient way to do this? Could you suggest me the best syntax? Finally, I have also to do the same with the mean squared error: again, in this second case, is it possible to avoid the "for" cycle? Thanks for your answers.
Expert Answer
Prashant Kumar
PhD Expert
Answered Aug 24, 2026
If you have the Statistics and Machine Learning Toolbox, it sounds like you want this:
>> x = randn(20,3);
>> y = x*[1 0;0 1;1 1];
>> corr(x,y)
ans =
0.9221 -0.1434
-0.2979 0.8438
0.6825 0.5606
I'm not sure what you mean by mean squared error. The following adds some noise to get z, then computes coefficients for predicting y from z, then computes the sum of squared differences between y and the predicted values for each column. Does this point you in the right direction?
>> z = x+randn(size(x))/100;
>> b
b =
0.9983 -0.0009
-0.0000 0.9964
1.0016 1.0049
>> sum((y-yhat).^2)
ans =
0.0025 0.0054
100% Run Guarantee
3-Hour Fast-Track Delivery
Need a Custom Version or Complete Simulation for This Problem?
Our 500+ PhD engineers build, debug, and optimize working MATLAB scripts and Simulink (.slx) models tailored to your exact assignment rubrics with zero plagiarism.
Tested on MATLAB R2024b / R2026a
Turnitin 0% Plagiarism Report
Free 7-Day Revisions Guarantee
Have a different question? Ask here
Related matlab Questions & Solutions
Browse All →
Explore similar technical troubleshooting questions and verified MATLAB solutions:
Ready-to-Run MATLAB & Simulink Projects
Browse All Projects →