如何用matlab对以下函数进行归一化处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用matlab对以下函数进行归一化处理相关的知识,希望对你有一定的参考价值。

clear
clc
e=23.54;
m=5.874;
hold on
for r=0:0.1:57.9
v=@(c) sqrt(r.^2.*(m-1.0).^2+e.^2.*m.^2-e.*m.*r.*cos(c).*(m-1.0).*2.0);
z1=quad(v,0,2*pi);
plot(r,z1)
end
请问如何对r和z1归一化,并画出曲线?

参考技术A clear
clc
e=23.54;
m=5.874;
hold on
for r=0:0.1:57.9;
v=@(c) sqrt(abs(r.^2*(m-1)^2+e^2*m^2-e*m*r.*cos(c)*(m-1)*2));
z1=quad(v,0,2*pi);
plot(r,z1)
end
按上面语句试试

归一化矩阵行,使其范数等于 1 (MATLAB)

【中文标题】归一化矩阵行,使其范数等于 1 (MATLAB)【英文标题】:Normalizing rows of matrix, so that their norm is equal to 1 (MATLAB) 【发布时间】:2013-05-06 16:25:08 【问题描述】:

我有以下问题 - 我有一个大小为 16x22440 的矩阵 A

我需要做的是对这个矩阵的每一行进行归一化,使它们的范数都等于1(for n=1:16 norm(A(n,:))==1

如何在 matlab 中实现这一点?

编辑: 该矩阵中的每一行都是由 160x140 图像创建的向量,因此必须单独考虑。需要对这些值进行归一化以创建特征面矩阵。

【问题讨论】:

欧几里德规范就是这样。 那我的回答应该对你有用。 【参考方案1】:

首先,计算范数(我在这里假设欧几里德范数)

n = sqrt( sum( A.^2, 2 ) );
% patch to overcome rows with zero norm
n( n == 0 ) = 1;
nA = bsxfun( @rdivide, A, n ); % divide by norm

【讨论】:

好吧,使用您的代码后,每行的规范为 ~0,而不是 1:8.6903e-05; 1.3841e-04 1.6891e-04 2.0224e-04; 3.5168e-04; 4.0101e-04 5.7108e-04; 6.3513e-04; 6.6574e-04; 8.1582e-04; 8.5704e-04; 8.7563e-04; 0.0010; 0.0012; 0.0015; 0.0017; @Jacka 忘记接受标准的sqrt。看看我的修复现在是否有效。【参考方案2】:

您安装的 Matlab 是否包含神经网络工具箱?如果是这样,那就试试normr

nA = normr(A);

否则,@Shai's solution 很好,只是它不能处理无限或NaN 输入——之后检查未定义的规范情况会更安全:

nA = bsxfun(@rdivide,A,sqrt(sum(A.^2,2)));
nA(~isfinite(nA)) = 1; % Use 0 to match output of @Shai's solution, Matlab's norm()

请注意,零长度(所有零分量)或无限长度向量(一个或多个分量+Inf-Inf)或带有NaN 分量的向量的归一化并没有真正明确定义。上面的解决方案返回所有的,就像 Matlab 的 normr 函数一样。然而,Matlab 的 norm 函数表现出不同的行为。您可能希望指定不同的行为,例如警告或错误、全零、NaN、按向量长度缩放的分量等。此线程在一定程度上讨论了零长度向量的问题:How do you normalize a zero vector?.

【讨论】:

谢谢您,很高兴了解简单的方法!

以上是关于如何用matlab对以下函数进行归一化处理的主要内容,如果未能解决你的问题,请参考以下文章

matlab程序的归一化问题

谁能帮我用matlab归一化一组数据,需要运行结果,谢谢

matlab中啥叫归一化坐标

matlab 怎样进行数据归一化

matlab 矩阵怎么归一化

关于用matlab进行向量归一化的问题