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 );
Best Answer