"Error using *". Help with my Monte Carlo Simulation

3 views (last 30 days)
I have created code on low rank assumption using nuclear norm using CVX. I'm thinking this error code is being caused by the variable X not being recognised but im not sure. Here is the following error code -
Error using *
Incorrect dimensions for matrix multiplication. Check that the
number of columns in the first matrix matches the number of rows
in the second matrix. To perform elementwise multiplication, use
'.*'.
Error in Untitled34 (line 36)
y(i_p) = trace(M_p{i_p}*X);
Related documentation
Here is my code :
clear all;
clc;
MONTE_CARLO = 10;
n = 10;
m = 20;
k = 5;
U = randn(m,k);
V = randn(k,n);
X = U*V
for p = 1 : 50 : n^2 % Number of measurements
for mc = 1 : MONTE_CARLO % Monte Carlo simulations
M_p = cell(p, 1); % Cell with measurement matrices
y = zeros(p, 1); % Vector of measurements
for i_p = 1 : p % Generate measurement matrices
M_p{i_p} = randn(n, n);
y(i_p) = trace(M_p{i_p}*X);
end
cvx_begin
variable Xe(n,n);
minimize(norm_nuc(Xe));
subject to
for i_p = 1 : p
trace(Xe*M_p{i_p}) == y(i_p);
end
cvx_end
end
end
  8 Comments
Bob Thompson
Bob Thompson on 27 Jan 2021
I don't know, because I don't know your problem statement to understand what X is supposed to be, or why you need a square matrix. It seems to me that this is not a MATLAB specific issue, and I recommend taking another look at the purpose for your code, rather than the specifics of the code itself. Sorry I can't be more help.

Sign in to comment.

Answers (0)

Community Treasure Hunt

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

Start Hunting!