Undefined function or variable 'cvx_begin'
75 views (last 30 days)
Show older comments
Hi everyone! I'm trying to understand how does matlab work with the matrix factorization which related to my task now. I used this code to test for matrix factorization. And the code dont run because of a function. The warning told that: "Undefined function or variable 'cvx_begin'". What should I fix it? Have any professional matlaber help me? Thank you in advance. Here is my code:
% Generate data matrix A
rstate = rand();
m = 10; n = 10; k = 5;
A = rand(m,k)*rand(k,n);
% Initialize Y randomly
Y = rand(m,k);
% Perform alternating minimization
MAX_ITERS = 30;
residual = zeros(1,MAX_ITERS);
for iter = 1:MAX_ITERS
cvx_begin quiet
if mod(iter,2) == 1
variable X(k,n)
X >= 0;
else
variable Y(m,k)
Y >= 0;
end
minimize(norm(A - Y*X,'fro'));
cvx_end
fprintf(1,'Iteration %d, residual norm %g\n',iter,cvx_optval);
residual(iter) = cvx_optval;
end
% Plot residuals
plot(residual);
xlabel('Iteration Number');
ylabel('Residual Norm');
% Display results
disp( 'Original matrix:' );
disp( A );
disp( 'Left factor Y:' );
disp( Y );
disp( 'Right factor X:' );
disp( X );
disp( 'Residual A - Y * X:' );
disp( A - Y * X );
fprintf( 'Residual after %d iterations: %g\n', iter, cvx_optval );
Accepted Answer
Steven Lord
on 16 Jul 2018
The cvx_begin function is not from any MathWorks-provided toolbox. I believe that it's part of this toolbox. You will need to download and install that toolbox to use that function.
2 Comments
Adam Danz
on 17 Jul 2018
Edited: Adam Danz
on 17 Jul 2018
After you download the toolbox to your Matlab folder you'll have to make sure that the directory that stores the toolbox is on your Matlab path.
Judging from the code you provided, there might be additional problems so feel free to return for help.
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!