子函数(评估模型)
function [ res,obj ] = evaluateModel( X,D,param,printResult )
fprintf('模型评估中...\n');
%% 求解lasso问题
alpha = mexLasso(X,D,param); % 求解稀疏编码系数
obj = mean(0.5*sum((X-D*alpha).^2)+param.lambda*sum(abs(alpha))); % 优化目标函数值
res = mean(0.5*sum((X-D*alpha).^2));
if printResult == true
%% 可视化 & 打印结果
ImD=displayPatches(D); % 可视化字典
figure(1); imagesc(ImD); colormap('gray');
fprintf('目标函数: %f\n',obj);
fprintf('重构残差:%f\n',res); % 重构残差
end
end
测试代码[1]
对lena图片进行8X8的重叠滑块,形成大小为 64×(512−81+1