我是靠谱客的博主 寒冷芹菜,最近开发中收集的这篇文章主要介绍matlab命令行窗口显示mat矩阵,matlab 矩阵reshape都是按照列展开的,opencv的cvmat是按照行展开的...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近要测试下数据,一个小问题明明觉得应该是正确的,哪知道老错误,今天参加summer school的时候和wdai讨论了下,发现应该是matlab和c++将

矩阵拉成向量的格式不一样,测试如下果然不一样,matlab是按照列展开的。opencv的cvmat是按照行展开的,matlab测试如下:

>> a = rand(4,3)

a =

0.6787    0.6555    0.2769

0.7577    0.1712    0.0462

0.7431    0.7060    0.0971

0.3922    0.0318    0.8235

>> b = reshape(a,[12 1])

b =

0.6787

0.7577

0.7431

0.3922

0.6555

0.1712

0.7060

0.0318

0.2769

0.0462

0.0971

0.8235

显然这个事按照列展开的。

如果想按行展开,代码如下: >> c = reshape(a',[12 1])

c =

0.6787

0.6555

0.2769

0.7577

0.1712

0.0462

0.7431

0.7060

0.0971

0.3922

0.0318

0.8235

将向量变成矩阵也是按列。代码如下: >> b1 = reshape(b,[4 3])

b1 =

0.6787    0.6555    0.2769

0.7577    0.1712    0.0462

0.7431    0.7060    0.0971

0.3922    0.0318    0.8235

>> c1 = reshape(c,[4 3])

c1 =

0.6787    0.1712    0.0971

0.6555    0.0462    0.3922

0.2769    0.7431    0.0318

0.7577    0.7060    0.8235

下面flag1 = 1,证明向量是按列成矩阵的 >> flag1 = isequal(a,b1)

flag1 =

1

下面flag2 = 0,也证明向量是按列成矩阵的

>> flag2 = isequal(a,c1)

flag2 =

0

下面是将矩阵按行展开的之后所得向量,再按照行变成矩阵代码 >> c2 = reshape(c,[3 4])'

c2 =

0.6787    0.6555    0.2769

0.7577    0.1712    0.0462

0.7431    0.7060    0.0971

0.3922    0.0318    0.8235

% flag3=1证明按照行变成矩阵成功了 >> flag3 = isequal(a,c2)

flag3 =

1

有些非常非常小的问题也得用程序去测试,程序一般是不会错的,要相信。要仔细

最后

以上就是寒冷芹菜为你收集整理的matlab命令行窗口显示mat矩阵,matlab 矩阵reshape都是按照列展开的,opencv的cvmat是按照行展开的...的全部内容,希望文章能够帮你解决matlab命令行窗口显示mat矩阵,matlab 矩阵reshape都是按照列展开的,opencv的cvmat是按照行展开的...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部