怎样用matlab进行列向量归一化?

怎样用matlab进行列向量归一化?,第1张

一、解决方法:

按列除以归一化因子,bsxfun(@rdivide,rand(3),1:3) 可以快速实现。

二、matlab的小技巧:

1、Ctrl+C 中断正在执行的 *** 作

如果程序不小心进入死循环,或者计算时间太长,可以在命令窗口中使用Ctrl+c来中断。MATLAB这时可能正疲于应付,响应会有些滞后。

2. figure命令新建一个绘图窗口

figure 可以打开一个空的绘图窗口,接下的绘图命令可以将图画在它里面,而不会覆盖以前的绘图窗口。当有多个figure窗口时,在命令窗口中执行如Plot等命令将覆盖当前figure窗口中的对象。所谓的当前figure窗口,也就是最后一次查看的窗口(可以用命令gcf得到)。

figure(N),将编号为N的窗口置为当前figure,出现在所有窗口的最前面,如果该窗口不存在,则新建一个编号为N的空白figure。

3. 注释掉一段程序:%{、%}。

经典方法是用 if 0,但缺点是不够直观,注释掉的内容仍然保持代码的颜色。现在可以用 %和{ 的组合。输入%{后,后面的代码都会变绿,在注释结束的地方再加上 %} 。

也可以选中要注释内容,在右键菜单中选择Comment (Uncomment去掉注释标记),或使用快捷键Ctrl+R。

将光标放在需要注释的行中,按Ctrl+R,将该行变为注释。取消注释也是一样的,快捷键为Ctrl+T。

4. doc 命令名,打开命令的帮助文档

与help命令不同,帮助文档MATLAB Help中对命令的描述更详细,往往还有一些例子,更便于理解。

5. clc 清屏

清除命令窗口中的所有输入和输出信息,不影响命令的历史记录。

6. clear 和clear all

clear 变量名:可以清除workspace中的无用的变量,尤其是一些特别大的矩阵,不用时及时清理,可以减少内存占用。

clear all 清除所有的变量,使workspace一无所有,当重新开始一次算法验证时,最好执行一次,让workspace中的变量一目了然。

7. close all

如果开了多个绘图窗口,用这个命令将它们一起关掉。

8. 上下光标键↑↓

在命令窗口中,上下光标键可以将历史记录中的命令复制到输入位置,便于快速重新执行。如果输入命令的前几个字母如 [row, col] =,再使用光标键,则只会选择以这些字母开始的命令。

9. Tab补全

对名称记得不太清楚的命令,可以输入开头的几个字母,然后按Tab键,当只有一个以这些字母开头的命令时,将自动补全命令名,否则显示一个命令名列表,方便从中选择。当然,只在命令窗口中有效。

10. cell模式

在一个长长的脚本m文件中,可能需要对其中的一段反复修改,查看执行效果,这时,cell模式就非常有用了。cell模式相当于将其中的代码拷贝到命令窗口中运行。两个%后接一个空格(%% )开始一个cell。将输入光标放到一个cell中时,背景将变为浅黄色,Ctrl+Enter执行cell中的代码。

执行cell中代码时不需要保存m文件,该m文件可以不在路径列表中。

cell模式中,断点不起作用,当然,调用的子程序中的断点还是正常的。

最简单的办法,把元素直接映射到(0,1)区间:

A=[1,3,5,1/3,2,4]

A1=A./sum(A)

将矩阵按列归一化的函数

function [Array_dst]=normalize(Array_src,ymin,ymax)

[l,r]=size(Array_src)

Bound=[]

for i=1:r

    Bound(1,i)=min(Array_src(:,i))

    Bound(2,i)=max(Array_src(:,i))

    if abs(Bound(1,i)-Bound(2,i))<0.000000001

        Bound(1,i)=0

        Bound(2,i)=1

    end

end

[m,n]=size(Array_src)

for i=1:m

    Array_dst(i,:)=ymin + (Array_src(i,:)-Bound(1,:))./(Bound(2,:)-Bound(1,:)).*( ymax - ymin )

end

参考资料

mapminmax 按列归一化的问题.ilovematlab[引用时间2018-4-1]

很简单,用函数mapminmax,文档太长我就不翻译了,只提醒几个关键

1 默认的map范围是[-1, 1],所以如果需要[0, 1],则按这样的格式提供参数:

MappedData = mapminmax(OriginalData, 0, 1)

2 只按行归一化,如果是矩阵,则每行各自归一化,如果需要对整个矩阵归一化,用如下方法:

FlattenedData = OriginalData(:)'% 展开矩阵为一列,然后转置为一行。

MappedFlattened = mapminmax(FlattenedData, 0, 1)% 归一化。

MappedData = reshape(MappedFlattened, size(OriginalData))% 还原为原始矩阵形式。此处不需转置回去,因为reshape恰好是按列重新排序

文档全文如下:

mapminmax

Process matrices by mapping row minimum and maximum values to [-1 1]

Syntax

[Y,PS] = mapminmax(YMIN,YMAX)

[Y,PS] = mapminmax(X,FP)

Y = mapminmax('apply',X,PS)

X = mapminmax('reverse',Y,PS)

dx_dy = mapminmax('dx',X,Y,PS)

dx_dy = mapminmax('dx',X,[],PS)

name = mapminmax('name')

fp = mapminmax('pdefaults')

names = mapminmax('pnames')

remconst('pcheck',FP)

Description

mapminmax processes matrices by normalizing the minimum and maximum values of each row to [YMIN, YMAX].

mapminmax(X,YMIN,YMAX) takes X and optional parameters

X

N x Q matrix or a 1 x TS row cell array of N x Q matrices

YMIN

Minimum value for each row of Y (default is -1)

YMAX

Maximum value for each row of Y (default is +1)

and returns

Y

Each M x Q matrix (where M == N) (optional)

PS

Process settings that allow consistent processing of values

mapminmax(X,FP) takes parameters as a struct: FP.ymin, FP.ymax.

mapminmax('apply',X,PS) returns Y, given X and settings PS.

mapminmax('reverse',Y,PS) returns X, given Y and settings PS.

mapminmax('dx',X,Y,PS) returns the M x N x Q derivative of Y with respect to X.

mapminmax('dx',X,[],PS) returns the derivative, less efficiently.

mapminmax('name') returns the name of this process method.

mapminmax('pdefaults') returns the default process parameter structure.

mapminmax('pdesc') returns the process parameter descriptions.

mapminmax('pcheck',FP) throws an error if any parameter is illegal.

Examples

Here is how to format a matrix so that the minimum and maximum values of each row are mapped to default interval [-1,+1].

*

x1 = [1 2 41 1 13 2 20 0 0]

[y1,PS] = mapminmax(x1)

Next, apply the same processing settings to new values.

*

x2 = [5 2 31 1 16 7 30 0 0]

y2 = mapminmax('apply',x2,PS)

Reverse the processing of y1 to get x1 again.

*

x1_again = mapminmax('reverse',y1,PS)

Algorithm

It is assumed that X has only finite real values, and that the elements of each row are not all equal.

*

y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7786001.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-09
下一篇2023-04-09

发表评论

登录后才能评论

评论列表(0条)

    保存