声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1467|回复: 4

[编程技巧] 请教如何改变一组数据的动态范围

[复制链接]
发表于 2007-1-9 11:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
现在有一组数据如
I02 = [139,145,150,178,165,180,250,215,250,255];
我希望将其范围重新规定在[123,255]之间
请教各位该如何做?

[ 本帖最后由 eight 于 2007-1-9 11:26 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-1-9 11:26 | 显示全部楼层
原帖由 xfdxz 于 2007-1-9 11:20 发表
现在有一组数据如
I02 = ;
我希望将其范围重新规定在之间
请教各位该如何做?



作规范化,最简单的就是线性拉伸
 楼主| 发表于 2007-1-9 13:13 | 显示全部楼层

回复 #2 eight 的帖子

如果最小值是0我知道可以用
255*I0/max(I0)做线形拉伸
但是不知道怎样让最小值取到123?
发表于 2007-1-9 13:42 | 显示全部楼层
原帖由 xfdxz 于 2007-1-9 13:13 发表
如果最小值是0我知道可以用
255*I0/max(I0)做线形拉伸
但是不知道怎样让最小值取到123?



那说明你还没有完全理解线性拉伸的含义,既然已经知道是线性函数,并且知道两个端点,这个问题实际上是二元方程组求参数问题:

假设线性拉伸函数为: y = ax + b ,变换前是x,变换后是y,
则利用两个端点得到两个方程: y_end = a * x_end + b
                                               y_start = a * x_start + b

求解后便可以得到参数a、b的值。上述的“最小值是0”只不过是当 x_start = y_start = 0 时得到 b = 0 的特例

评分

1

查看全部评分

 楼主| 发表于 2007-1-9 14:26 | 显示全部楼层

回复 #4 eight 的帖子

这回明白了
谢谢eight老师的耐心指点:@)
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-27 03:14 , Processed in 0.086100 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表