一个数学问题请教

[复制链接]
4109|19
 楼主| lanyong 发表于 2007-12-28 12:35 | 显示全部楼层 |阅读模式
<br />&nbsp;&nbsp;&nbsp;&nbsp;8个8bit数据<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;L[8]={L0,L1,L2,,,&nbsp;L7}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;如何最快<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;得到H[8]={H0,H1,H2,,,H7}<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;按位排列如下:<br />L0.7&nbsp;L0.6&nbsp;L0.5&nbsp;L0.4&nbsp;L0.3&nbsp;L0.2&nbsp;L0.1&nbsp;L0.0<br />L1.7&nbsp;L1.6&nbsp;L1.5&nbsp;L1.4&nbsp;L1.3&nbsp;L1.2&nbsp;L1.1&nbsp;L1.0<br />L2.7&nbsp;L2.6&nbsp;L2.5&nbsp;L2.4&nbsp;L2.3&nbsp;L2.2&nbsp;L2.1&nbsp;L2.0<br /><br />,&nbsp;&nbsp;&nbsp;&nbsp;<br />,<br />,<br />L7.7&nbsp;L7.6&nbsp;L7.5&nbsp;L7.4&nbsp;L7.3&nbsp;L7.2&nbsp;L7.1&nbsp;L7.0<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;H与L关系如下:<br />&nbsp;&nbsp;&nbsp;&nbsp;H0:L7.0,,,L2.0,L1.0&nbsp;L0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//即按列取最低位组成H0.<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;是否有硬件可以完成这样的运算?<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;就有点象矩阵旋转.
兰天白云 发表于 2007-12-28 12:42 | 显示全部楼层

最快?不知到,HOTPOWER方法很多,进来说说

  
 楼主| lanyong 发表于 2007-12-28 13:01 | 显示全部楼层

可以先提方案吧.

一个笨办法,可能也是最有效果的办法就是<br /><br />一个位一个位比较,置高或者清0啊.<br /><br />不知道有没有其它办法.
hotpower 发表于 2007-12-28 13:01 | 显示全部楼层

查表不用脑~~~

  
 楼主| lanyong 发表于 2007-12-28 13:02 | 显示全部楼层

查表???

我彻底晕,这里有多少种组合方式啊!<br />256^8=???
 楼主| lanyong 发表于 2007-12-28 13:35 | 显示全部楼层

法2

通过一个8bit口,把64位数据都移出来.接74hc595.<br /><br />然后再搞64根线,8个一组,分别连接到8个8bit口中.<br /><br />得到8个转换后的数据.<br /><br />怎么样?<br /><br />哈哈.<br /><br />有点晕了。
yewuyi 发表于 2007-12-28 13:43 | 显示全部楼层

这样行不行?!

H0=L0;<br />H0|=(L1&lt&lt1)&0x02;<br />H0|=(L2&lt&lt2)&0x04;<br />H0|=(L3&lt&lt3)&0x08;<br />H0|=(L4&lt&lt4)&0x10;<br />H0|=(L5&lt&lt5)&0x20;<br />H0|=(L6&lt&lt6)&0x40;<br />H0|=(L7&lt&lt7)&0x80;
 楼主| lanyong 发表于 2007-12-28 14:03 | 显示全部楼层

可以的啊.

最好是同时给出汇编的代码.<br /><br />题目要求最快啊.<br /><br />哈哈.<br /><br />估计上面的代码汇编出来一大串啊.
 楼主| lanyong 发表于 2007-12-28 14:27 | 显示全部楼层

线性代数谁还记得?

矩阵旋转.<br /><br />好象可以通过什么运算,让矩阵旋转起来啊.<br /><br />有数学高手吗?
兰天白云 发表于 2007-12-28 15:33 | 显示全部楼层

hotpower真不俺面子

居然出这么个瘦主意
 楼主| lanyong 发表于 2007-12-28 15:57 | 显示全部楼层

浩如烟海

&nbsp;旋转矩阵是一个看似简单实际却异常复杂的问题,尽管有许许多多的人对它非常感兴趣,然而真正在这个领域内做出了开创性贡献的人却不是很多。要想在此领域有所作为,不仅要对组合设计的经典理论和常用方法有深入的了解,还要在此基础上有所创新。有许多国外的所谓彩票专家(比如美国的盖尔。霍华德女士)声称旋转矩阵是由她首先提出来的。实际上,所有的旋转矩阵都是组合数学家们经过多年的精心研究得出的,而不是霍华德这样的彩票专家所研究出来的。&nbsp;<br />
ayb_ice 发表于 2007-12-28 19:05 | 显示全部楼层

这种没有什么好的方法

  
yewuyi 发表于 2007-12-28 19:14 | 显示全部楼层

不知道用这做什么?

  
yewuyi 发表于 2007-12-29 10:27 | 显示全部楼层

用8个595的话,发了那么多字节再接收,好象也快不到那去啊

  
xieyuanbin 发表于 2007-12-30 12:41 | 显示全部楼层

实际概念就是8*8点阵图逆时针旋转90°

没什么好办法,只能用软件移位。等会写个汇编出来。如果用硬件,成本高,电路复杂,不划算。
xieyuanbin 发表于 2007-12-30 13:03 | 显示全部楼层

汇编代码

<br />&nbsp;&nbsp;&nbsp;&nbsp;CBLOCK&nbsp;0X20<br />L7<br />L6<br />L5<br />L4<br />L3<br />L2<br />L1<br />L0<br />H0<br />H1<br />H2<br />H3<br />H4<br />H5<br />H6<br />H7<br />SHIFT_COUNT&nbsp;&nbsp;&nbsp;&nbsp;;计数<br />&nbsp;&nbsp;&nbsp;&nbsp;ENDC<br /><br />MATRIX:<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;.8<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;&nbsp;SHIFT_COUNT<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;H0<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;&nbsp;FSR<br />LOOP_M:<br />&nbsp;&nbsp;&nbsp;&nbsp;RRF&nbsp;&nbsp;&nbsp;&nbsp;L0,F<br />&nbsp;&nbsp;&nbsp;&nbsp;RRF&nbsp;&nbsp;&nbsp;&nbsp;INDF,F<br />&nbsp;&nbsp;&nbsp;&nbsp;RRF&nbsp;&nbsp;&nbsp;&nbsp;L1,F<br />&nbsp;&nbsp;&nbsp;&nbsp;RRF&nbsp;&nbsp;&nbsp;&nbsp;INDF,F<br />&nbsp;&nbsp;&nbsp;&nbsp;RRF&nbsp;&nbsp;&nbsp;&nbsp;L2,F<br />&nbsp;&nbsp;&nbsp;&nbsp;RRF&nbsp;&nbsp;&nbsp;&nbsp;INDF,F<br />&nbsp;&nbsp;&nbsp;&nbsp;RRF&nbsp;&nbsp;&nbsp;&nbsp;L3,F<br />&nbsp;&nbsp;&nbsp;&nbsp;RRF&nbsp;&nbsp;&nbsp;&nbsp;INDF,F<br />&nbsp;&nbsp;&nbsp;&nbsp;RRF&nbsp;&nbsp;&nbsp;&nbsp;L4,F<br />&nbsp;&nbsp;&nbsp;&nbsp;RRF&nbsp;&nbsp;&nbsp;&nbsp;INDF,F<br />&nbsp;&nbsp;&nbsp;&nbsp;RRF&nbsp;&nbsp;&nbsp;&nbsp;L5,F<br />&nbsp;&nbsp;&nbsp;&nbsp;RRF&nbsp;&nbsp;&nbsp;&nbsp;INDF,F<br />&nbsp;&nbsp;&nbsp;&nbsp;RRF&nbsp;&nbsp;&nbsp;&nbsp;L6,F<br />&nbsp;&nbsp;&nbsp;&nbsp;RRF&nbsp;&nbsp;&nbsp;&nbsp;INDF,F<br />&nbsp;&nbsp;&nbsp;&nbsp;RRF&nbsp;&nbsp;&nbsp;&nbsp;L7,F<br />&nbsp;&nbsp;&nbsp;&nbsp;RRF&nbsp;&nbsp;&nbsp;&nbsp;INDF,F<br />&nbsp;&nbsp;&nbsp;&nbsp;INCF&nbsp;&nbsp;&nbsp;&nbsp;FSR,F<br />&nbsp;&nbsp;&nbsp;&nbsp;DECFSZ&nbsp;&nbsp;&nbsp;&nbsp;SHIFT_COUNT<br />&nbsp;&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;&nbsp;LOOP_M<br />&nbsp;&nbsp;&nbsp;&nbsp;RETURN
xieyuanbin 发表于 2007-12-30 19:29 | 显示全部楼层

不好意思,我英文很不好,不知道那里什么是最简单的

数学也不好,这里的例子应该是最简单的。复杂一点的,比如在PHOTOSHOP中,把某个图片旋转一定角度,旋转留下的用背景色填充,因为图像**中每个像素包含三种颜色信息,每种颜色用一个字节表示,这样一个矩阵计算要复杂许多,但无非就是数据如何传输等等。<br />
 楼主| lanyong 发表于 2007-12-30 20:31 | 显示全部楼层

兄弟,你的方法已经是最快的了.

不过,不要搞跳转.<br /><br />直接一个个写下去就好.<br /><br />用rom来换时间.
xieyuanbin 发表于 2007-12-30 22:03 | 显示全部楼层

知道,就是重复8次RRF那段

不过不用INDF间接寻址了,直接赋值,这是最省时间的,不过写得太长我怕大家烦
mikesullen 发表于 2008-1-4 14:47 | 显示全部楼层

硬件应该也可以

用8个锁存器,74hc373
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

457

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部
0