function [Y, p, obj] = AWP(Fs, opts)
% solve:
% min_{R_i, Y} \sum_i || Y - F_i R_i ||_F
% s.t. R_i^T R_i = I, Y \in Ind
%
% paras:
% Fs 1xv cell, contain nxk spectral embedding (F_i)
% opts options for debug and parameter setting
% Y nx1 indicator vector
% p vx1 vector
%
% Ref: Multiview Clustering via Adaptively Weighted Procrustes
% Written by: Lai Tian, tianlai.cs@gmail.com
% 2018-01-20
if (~exist('opts', 'var'))
opts = [];
end
NITER = 20;
if (isfield(opts, 'NITER'))
NITER = opts.NITER;
end
v = length(Fs);
[n, k] = size(Fs{1});
% == initialization ==
%Y = sparse(1:n, randi(k, n, 1), ones(n, 1), n, k);
Y = zeros(n, k);
Rs = cell(v, 1);
for idx = 1:v; Rs{idx} = eye(k); end
p = ones(v, 1);
for iter = 1:NITER
% == update Y ==
sum_pFR = zeros(size(Y));
for idx = 1:v
sum_pFR = sum_pFR + Fs{idx}*Rs{idx}/p(idx);
end
[~, y_idx] = max(sum_pFR, [], 2);
Y = full(sparse(1:n, y_idx, ones(n, 1), n, k));
% == update R_i ==
for idx = 1:v
[tmp_u, ~, tmp_v] = svd(Y'*Fs{idx});
Rs{idx} = tmp_v * tmp_u';
end
% == update p_i ==
for idx = 1:v
p(idx) = norm(Y - Fs{idx}*Rs{idx}, 'fro');
end
obj(iter) = norm(p);
end
% == from indicator mat to vec ==
[~, Y] = max(Y, [], 2);
end
基于自适应加权的多视图聚类算法matlab版本
需积分: 9 147 浏览量
2022-11-10
18:45:27
上传
评论 1
收藏 1KB ZIP 举报
浅忆笙歌暖
- 粉丝: 3
- 资源: 4
最新资源
- C#,电话数字键盘问题(Mobile Numeric Keypad problem)的算法与源代码
- 《STM32单片机+DHT11温度+按键计分+蜂鸣器报警器+OLED屏幕》源代码
- 基于深度学习FPGA的I2C 总线控制器及读写 EEPROM,适合FPGA初学者
- Screenshot_20240512_172426.jpg
- 自动驾驶仿真到底有何用?.pdf
- 前端代码项目,穿搭速递,列表链接css伪类,一个网页项目
- 【小白python数据分析入门4Pandas可视化-板块9 外部数据的读取与存储,9.1 数据读取】
- jquery的JavaScript的文件
- PlantUML 语言参考
- 基于SpringBoot+Mysql的水果销售系统(前台+后台)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈