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

10 次查看(过去 30 天)
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 个评论
Bob Thompson
Bob Thompson 2021-1-27
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.

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by