如何用matlab将矩阵按列归一化
如何将这个矩阵按列归一化:A=[11/2433;21755;1/41/711/21/3;1/31/5211;1/31/5311]麻烦给出程序的写法...
如何将这个矩阵按列归一化:A=[1 1/2 4 3 3;2 1 7 5 5;1/4 1/7 1 1/2 1/3;1/3 1/5 2 1 1;1/3 1/5 3 1 1]
麻烦给出程序的写法 展开
麻烦给出程序的写法 展开
6个回答
展开全部
矩阵按列按行归一化到L2范数的原理和最精简Matlab代
在模式识别和机器学习的数据预处理过程中,对数据集按行或者按列进行L2范数归一化是一种常见的归一化方式,因此本文将介绍对向量进行L2范数归一化的原理和方法,并给出相关的Matlab源代码,供后学者作为基础知识参考使用。
由此,我们可以很块的写出最简单的matlab源代码如下:
首先按行归一化:
% Examples
A=[3 4;5 12];
[m n] = size(A);
% normalize each row to unit
for i = 1:m
A(i,:)=A(i,:)/norm(A(i,:));
end
按列归一化:
% normalize each column to unit
A=[3 4;5 12];
for i = 1:n
A(:,i)=A(:,i)/norm(A(:,i));
end
然而,上述代码最能实现功能,但并不是最优的,它只是一种对该过程的最佳理解代码。在Matlab中,for循环是一件非常费时间的结构,因此我们在代码中应该尽量少用for循环。由此,我们可以用repmat命令得到另一种更加简洁更加快速的代码,只是这种代码对于初学者理解起来比较费劲。可以看错是自己水平的一种进阶吧。
% normalize each row to unit
A = A./repmat(sqrt(sum(A.^2,2)),1,size(A,2));
% normalize each column to unit
A = A./repmat(sqrt(sum(A.^2,1)),size(A,1),1);
在模式识别和机器学习的数据预处理过程中,对数据集按行或者按列进行L2范数归一化是一种常见的归一化方式,因此本文将介绍对向量进行L2范数归一化的原理和方法,并给出相关的Matlab源代码,供后学者作为基础知识参考使用。
由此,我们可以很块的写出最简单的matlab源代码如下:
首先按行归一化:
% Examples
A=[3 4;5 12];
[m n] = size(A);
% normalize each row to unit
for i = 1:m
A(i,:)=A(i,:)/norm(A(i,:));
end
按列归一化:
% normalize each column to unit
A=[3 4;5 12];
for i = 1:n
A(:,i)=A(:,i)/norm(A(:,i));
end
然而,上述代码最能实现功能,但并不是最优的,它只是一种对该过程的最佳理解代码。在Matlab中,for循环是一件非常费时间的结构,因此我们在代码中应该尽量少用for循环。由此,我们可以用repmat命令得到另一种更加简洁更加快速的代码,只是这种代码对于初学者理解起来比较费劲。可以看错是自己水平的一种进阶吧。
% normalize each row to unit
A = A./repmat(sqrt(sum(A.^2,2)),1,size(A,2));
% normalize each column to unit
A = A./repmat(sqrt(sum(A.^2,1)),size(A,1),1);
展开全部
归一化是指列求和为1还是平方和为1?
vec = sum(A);%归一化后列求和为1
%vec = sum(A.^2);%归一化后列求平方和为1
[M,N] = size(A);
B = repmat(vec,M,1);
A = A./B;
vec = sum(A);%归一化后列求和为1
%vec = sum(A.^2);%归一化后列求平方和为1
[M,N] = size(A);
B = repmat(vec,M,1);
A = A./B;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
矩阵按列按行归一化到L2范数的原理和最精简Matlab代码
在模式识别和机器学习的数据预处理过程中,对数据集按行或者按列进行L2范数归一化是一种常见的归一化方式,因此本文将介绍对向量进行L2范数归一化的原理和方法,并给出相关的Matlab源代码,供后学者作为基础知识参考使用。

由此,我们可以很块的写出最简单的matlab源代码如下:
首先按行归一化:
% Examples
A=[3 4;5 12];
[m n] = size(A);
% normalize each row to unit
for i = 1:m
A(i,:)=A(i,:)/norm(A(i,:));
end
按列归一化:
% normalize each column to unit
A=[3 4;5 12];
for i = 1:n
A(:,i)=A(:,i)/norm(A(:,i));
end
然而,上述代码最能实现功能,但并不是最优的,它只是一种对该过程的最佳理解代码。在Matlab中,for循环是一件非常费时间的结构,因此我们在代码中应该尽量少用for循环。由此,我们可以用repmat命令得到另一种更加简洁更加快速的代码,只是这种代码对于初学者理解起来比较费劲。可以看错是自己水平的一种进阶吧。
% normalize each row to unit
A = A./repmat(sqrt(sum(A.^2,2)),1,size(A,2));
% normalize each column to unit
A = A./repmat(sqrt(sum(A.^2,1)),size(A,1),1);
在模式识别和机器学习的数据预处理过程中,对数据集按行或者按列进行L2范数归一化是一种常见的归一化方式,因此本文将介绍对向量进行L2范数归一化的原理和方法,并给出相关的Matlab源代码,供后学者作为基础知识参考使用。

由此,我们可以很块的写出最简单的matlab源代码如下:
首先按行归一化:
% Examples
A=[3 4;5 12];
[m n] = size(A);
% normalize each row to unit
for i = 1:m
A(i,:)=A(i,:)/norm(A(i,:));
end
按列归一化:
% normalize each column to unit
A=[3 4;5 12];
for i = 1:n
A(:,i)=A(:,i)/norm(A(:,i));
end
然而,上述代码最能实现功能,但并不是最优的,它只是一种对该过程的最佳理解代码。在Matlab中,for循环是一件非常费时间的结构,因此我们在代码中应该尽量少用for循环。由此,我们可以用repmat命令得到另一种更加简洁更加快速的代码,只是这种代码对于初学者理解起来比较费劲。可以看错是自己水平的一种进阶吧。
% normalize each row to unit
A = A./repmat(sqrt(sum(A.^2,2)),1,size(A,2));
% normalize each column to unit
A = A./repmat(sqrt(sum(A.^2,1)),size(A,1),1);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
比如矩阵A,m*n维的,归一化到[a,b]区间
代码如下:
amax = max(max(A)); %求矩阵中最大数
amin = min(min(A)); %求矩阵中最小数
B = (A-amin)/(amax-amin)*(b-a)+a;
B即为归一化到[a,b]区间的矩阵
代码如下:
amax = max(max(A)); %求矩阵中最大数
amin = min(min(A)); %求矩阵中最小数
B = (A-amin)/(amax-amin)*(b-a)+a;
B即为归一化到[a,b]区间的矩阵
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1. 行归一化
a=[1 2 3;4 5 6; 7 8 9];
%行归一化
v=sum(a,2);% 行求和
D=diag(v);% 生成以向量v为对角的对角矩阵
norm_a=D^-1*a;% norm_a即为行归一化矩阵
2. 列归一化
a=[1 2 3;4 5 6; 7 8 9];
%列归一化
v=sum(a);% 列求和
D=diag(v);% 生成以向量v为对角的对角矩阵
norm_a=a*(D^-1);% norm_a即为列归一化矩阵
数据矩阵单位化
方法一:
%%矩阵的列向量单位化
%输出矩阵Y为单位化矩阵
%方法即是矩阵中所有元素除以该元素所在列向量的二范数
clc;
clear;
X=[790 3977 849 1294 1927 1105 204 1329
768 5037 1135 1330 1925 1459 275 1487
942 2793 820 814 1617 942 155 976
916 2798 901 932 1599 910 182 1135
1006 2864 1052 1005 1618 839 196 1081];
%方法一
[m,n]=size(X);
for i=1:n
A(1,i)=norm(X(:,i));
end
A=repmat(A,m,1);
Y=X./A;
a=[1 2 3;4 5 6; 7 8 9];
%行归一化
v=sum(a,2);% 行求和
D=diag(v);% 生成以向量v为对角的对角矩阵
norm_a=D^-1*a;% norm_a即为行归一化矩阵
2. 列归一化
a=[1 2 3;4 5 6; 7 8 9];
%列归一化
v=sum(a);% 列求和
D=diag(v);% 生成以向量v为对角的对角矩阵
norm_a=a*(D^-1);% norm_a即为列归一化矩阵
数据矩阵单位化
方法一:
%%矩阵的列向量单位化
%输出矩阵Y为单位化矩阵
%方法即是矩阵中所有元素除以该元素所在列向量的二范数
clc;
clear;
X=[790 3977 849 1294 1927 1105 204 1329
768 5037 1135 1330 1925 1459 275 1487
942 2793 820 814 1617 942 155 976
916 2798 901 932 1599 910 182 1135
1006 2864 1052 1005 1618 839 196 1081];
%方法一
[m,n]=size(X);
for i=1:n
A(1,i)=norm(X(:,i));
end
A=repmat(A,m,1);
Y=X./A;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询