MATLAB:1 matlab 与 c++ 数据存储的差异
2016-01-18 16:20
381 查看
Matlab和Fortran一样,都是列优先的. 与之相反的是C++, 是行优先的.
原因:数学计算里面很多情况下是要将矩阵看成列向量组。举例:常见的sum和mean函数
sum()函数:默认列优先
B=sum(A) 对于矩阵A进行每列求和 B=sum(A,dim) 如果dim = 1 对于矩阵A进行每列求和 如果dim = 2 对于矩阵A进行每行就和 B=sum(A,'double') B=sum(A,'native') B=sum(A,dim,'double') B=sum(A,dim,'native') 中的doulbe和native都是对于返回数据类型进行特别的说明 B=sum(A(:))是对矩阵进行全矩阵数值求和。 必须注意一点的是,如果你的矩阵数据类型是cell等无法进行直接求和的数据类型,需要对数据进行预处理。我常遇到的是cell2mat(A)。这样,就可以求和了!
mean()函数
M = mean(A) 如果A是一个向量,mean(A)返回A中元素的平均值。 如果A是一个矩阵,mean(A)将其中的各列视为向量,把矩阵中的每列看成一个向量,返回一个包含每一列所有元素的平均值的行向量。 如果A是一个多元数组,mean(A)将数组中第一个非单一维的值看成一个向量,返回每个向量的平均值。 M = mean(A,dim) 对于矩阵,mean(A,1)就是包含每一列的平均值的行向量。 对于矩阵,mean(A,2)就是包含每一行的平均值的列向量。 A = [1 2 3; 3 3 6; 4 6 8; 4 7 7]; mean(A) ans = 3.0000 4.5000 6.0000 mean(A,2) ans = 2.0000 4.0000 6.0000 6.0000 mean(A) 当A为向量时,那么返回值为该向量所有元素的均值 当A为矩阵时,那么返回值为该矩阵各列向量的均值 mean(A,2) 返回值为该矩阵的各行向量的均值
MATLAB: bin文件的写入与读取
# matlab生成的bin文件(因为用于C++使用,所以转置保存了。。。) close all;clear all;clc; B = randn(5); fid = fopen('test.bin','wb'); fwrite(fid,B','double'); fclose(fid);
# matlab读取bin close all;clear all;clc; fid = fopen('test.bin','rb'); A = fread(fid,[5,5]'double'); fclose(fid);
C++: bin文件的写入与读取
待完成。。。libsvm3.11+3.20(及以后版本)安装
具体步骤:1.File->set path ->add with subfolders->加入libsvm-3.11/3.20文件夹的解压路径(就是你下载好的主文件夹路径 里面包含matlab,Python,windows等子文件夹的那个)
2.
mex -setup
3.将matlab当前目录切换到 *:****\libsvm-3.20\matlab
make
4.检验安装是否正确
a.如果你装的是libsvm3.11的话
加载数据方法是,训练和预测方法是:
load heart_scale; model = svmtrain(heart_scale_label,heart_scale_inst); [predict_label,accuracy] = svmpredict(heart_scale_label,heart_scale_inst,model);
b.如果你装的是libsvm-3.20的话
加载数据方法是,训练和预测方法是:
[heart_scale_label,heart_scale_inst]= libsvmread('heart_scale'); model = svmtrain(heart_scale_label,heart_scale_inst); [predict_label,accuracy,decision_values] = svmpredict(heart_scale_label,heart_scale_inst,model,1);
之所以有区别是因为在libsvm3.11中的heart_scale的格式是mat,matlab可以直接load的,训练和测试的方法也比较老版。
而在libsvm3.20中heart_scale的数据格式是c++版的,matlab需要转换一下才可以使用,加载数据要用libsvmread函数。
相关文章推荐
- 【zz】matlab 腐蚀膨胀算法
- paper 2:图像处理常用的Matlab函数汇总
- MATLAB绘制平行六面体
- 线性代数与MATLAB2
- Matlab中调用文件夹中子文件夹内.m文件的方法
- 【zz】matlab 均值方差
- MATLAB向txt连续写入数据
- Matlab学习一 图像基本处理
- matlab r2010b netcdf 工具箱 安装方法
- matlab符号计算
- 如何让matlab用mex与C连接使用有例…
- 用mcc将matlab程序生成独立的可执…
- mcc函数实现matlab的m文件转化为c
- Matlab2012Ra由M文件产生C代码
- 安装matlab后引起编译gtk3的问题
- Matlab与C/C++联合编程之从Matlab…
- Matlab与C++混合编程(依赖OpenCV…
- 在Java程序中调用Matlab函数
- Matlab中使用文本文件(.txt)进行数据存取的技巧总结(1)
- MATLAB 生成随机整数 的各种方法以及实例