标题:关于十进制矩阵按照二进制分解成分解矩阵的求助
只看楼主
沈少主
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-5-5
 问题点数:0 回复次数:15 
关于十进制矩阵按照二进制分解成分解矩阵的求助
例如矩阵A=[11,12     我想按照他们的二进制排成8个新矩阵 分别是 11,12,13,14 的二进制
            13,14]
数的第一位到第8位 但是我只能用最笨的方法手动分解。。。 不知道那位大虾可以帮帮我

附:我用了matlab的bitget函数 但是无法做到自动提取 只能一位一位的手动提取
谢谢谢谢啊~~~~
搜索更多相关主题的帖子: 二进制 矩阵 十进制 分解 大虾 
2008-05-05 15:55
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
得分:0 
用1<<n,再逐个和数组元素求与呗

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-05-05 15:59
沈少主
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-5-5
得分:0 
额,这位大虾,小弟不是很明白你的意思,我对C懂得不多,不知能不能详细解释下,谢谢啊
2008-05-05 16:06
沈少主
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-5-5
得分:0 
我用了Matlab中的 bitget 就只可以一位一位的手动提取
2008-05-05 16:33
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
得分:0 
举例:第四个数组,取二进制的从低数第四位
1<<3,即00001000,和11求与
  00001011(11的二进制)
& 00001000
-----------
         1
这样就取出了第四位的数了

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-05-05 16:45
沈少主
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-5-5
得分:0 
谢谢 明白了
2008-05-05 17:00
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
得分:0 
上面没说全,求与后还要再右移到各位上。
没事写了个代码:
程序代码:
#include "stdio.h"

typedef struct _array
{
    int arr[4];
}array;

void type_array(array data);

void set_array(array base,array *data,int index);

int main()
{
    array base;
    array data[8];
    int i;
    for(i = 0; i < 4; i++)
        base.arr[i] = 11 + i;
    type_array(base);
    for(i = 0; i < 8; i++)
    {
        set_array(base,&data[i],i);
        type_array(data[i]);
    }
}

void type_array(array data)
{
    putchar('\n');
    printf("%d\t%d\n",data.arr[0],data.arr[1]);
    printf("%d\t%d\n",data.arr[2],data.arr[3]);
}

void set_array(array base,array *data,int index)
{
    int temp;
    int i;
    temp = 1 << index;
    for(i = 0; i < 4; i++)
        data->arr[i] = (base.arr[i] & temp) >> index;
}

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-05-05 17:22
沈少主
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-5-5
得分:0 
好强。。。  佩服佩服 我还想请教一下 还是比如1楼的A矩阵 [11,12  = [1011,1100
                                                               13,14]   1101,1110]
我把它按位提了出来 分别是 B4=[1,1  B3=[0,1   B2=[1,0    B1=[1,0
                              1,1]     1,1]      0,1]       1,0]  现在应该怎么才能把这个分开的矩阵在合并起来(合并成A)呢? 毫无头绪啊 ~
2008-05-05 17:30
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
得分:0 
只是逆操作,直接按权相加啊,
也就是左移然后加起来

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-05-05 17:40
沈少主
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-5-5
得分:0 
按这个方法是可行 不过在速度方面就完全不行了 我做的使图像矩阵 256*256 的 这样做运算量太大了 在运算速度方面有很大的要求。。 不知道还有没有简单的方法合并
不知道你对Matlab了解吗 像刚刚的提取bitget 可以很容易的一步做到直接提取 但是合并好像就没有函数 - -
不知道还有没有运算量小一些的合并方法?
2008-05-05 18:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-212514-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.202307 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved