24小时热门版块排行榜    

查看: 2064  |  回复: 1

绝尘师太

新虫 (初入文坛)

[求助] 矩阵按列重排(Matlab 到 C) 已有1人参与

把一个矩阵A按照一个向量V的值按列重排,V中元素个数与A的列数相同。
这个问题在matlab中很容易实现,但是转换到C语言总是出问题,求各位高手看下C的代码问题出现在哪里。

Matlab很简单
A_new = A(:, V);

我写的C code:

for (int i = 0; i < w; i++) // w 表示 A 的列数
    {
       int index = V[ i ];
            for (int j = 0; j < h; j++) //h表示A的行数
            {
                     A_new[j * w + i] = A[j * w + (index - 1)];
            }
    }

[ Last edited by 绝尘师太 on 2015-2-16 at 18:00 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ubosword

木虫 (小有名气)

【答案】应助回帖

应该是循环内部的索引有问题。

Matlab转C的话,如果用一维矩阵存储,为了和Matlab统一,就用列主向的方式,
然后在循环赋值的话,应该是:A_new[i * h + j] = A[(index-1) * h + j];

用二维矩阵的话,就简单点了。
2楼2015-02-19 13:24:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 绝尘师太 的主题更新
信息提示
请填处理意见