Matlab使用心得

来源:互联网 发布:中国汽车数据网 编辑:程序博客网 时间:2024/04/27 16:23
1. 安装:按照网上的帖子正常安装,http://wenku.baidu.com/view/7e62e06548d7c1c708a1450c.html
win7 74位安装完成后点击Matlab运行的快捷方式,右键属性,选择一windows2000兼容运行
2.别人传的程序放到work文件夹里面,在控制台引用就可以
3. 先把需要用的程序放到work文件夹下,然后打开按F5运行
4.>>dc=dct(x);   对一维数组进行DCT变换, >>xx=idct(dc); 反DCT变换,目的:用Matlab测试c语言的DCT变换是否正确
    m = [136,147];
    y = dct(m);
    y


5.java.lang.OutOfMemoryError 这个错误解决方案


matlab的java.lang.OutOfMemoryError错误 
Java虚拟机内存不够用了.可以增加最大内存设置. 


1. 查找matlab根路径.在matlab命令行中敲入:matlabroot 
显示根路径,如:C:\\MATLAB7 


2.查看当前Java虚拟机最大堆内存, 敲入:java.lang.Runtime.getRuntime.maxMemory 


3.查看Java虚拟机版本.敲入:version -java 


4.在 $MATLAB\\bin\\$ARCH 路径下新建java.opts文件. 
$MATLAB是根路径,例如C:\\MATLAB7 
$ARCH是系统架构.例如win32,则在C:\\MATLAB7\\bin\\win32下新建java.opts文件. 


5.用记事本打开java.opts文件, 
对于版本是1.2到1.5的Java虚拟机,输入: 
-Xmx268435456 


对于版本是1.1.8的JVM,输入 
maxHeapSize = 268435456 
保存. 


这里268435456是新设置的JVM的最大堆内存.可以改成其他值. 


6. 重启matlab,敲入java.lang.Runtime.getRuntime.maxMemory 
显示最大内存改变,设置成功. 
http://blog.c114.net/html/10/24810-19934.html


7.读取纯文本文件.txt(必须是数字,中间是空格,没有括号符号什么的)
    d = dlmread('number.txt');
    注:这个有问题,会多出一列,那一列全部为0
正确做法是:
    d = load('number.txt');


8.Matlab读取矩阵中的某一段的写法:
>> dcx1(:,1:6) = dcx(:,1:6);
>>  dcx1(:,7:12)= dcx(:,28:33);
>>  dcx1(:,13:18) = dcy(:,1:6);
>>  dcx1(:,19:24)= dcy(:,28:33);


9.把Matlab里面的.mat文件写成c语言用的.bin文件
load('C:\Users\ice\Desktop\dcxy.mat')
 fid=fopen('dctxy.bin','wb');
for j=1:24
for i=1:9216
fwrite(fid,dcx1(i,j),'int');
end
end
fclose(fid);


10.用Matlab读取.bin文件
fid=fopen('a.bin','rb');
a=fread(fid,'int');
fclose(fid)
http://blog.21ic.com/user1/6068/archives/2009/63312.html


11.Matlab改c语言
for循环中
i = 1:n
改c:for(i = 0; i < n; i++)


j = n:-1:1
改c:for(j = n-1, j > -1; j--)


12:Matalb表示多维矩阵
a = [1 2 3; 4 5 6]


13. Matlab 中 log2(10)
用c语言表示
log(10.0) / log(2.0)


14.写.mat文件   save D:\jc jc
15. elow=bitshift(elow,1);   改成c:register unsigned int low = (eep->Elow<<1);


16. mod(3,80); 改成C:3%80;
 
17. reshape把指定的矩阵改变形状,但是元素个数不变
      比如a 是1*10的矩阵b = reshape(a,5,2);就变成一个5*2的矩阵
       如果想编程10*1的矩阵只需要 a'就可以


18.matlab位运算
     bitand  :按位与 (相当于c的&)
     bitor  :  按位或  (相当于c的 | )
    bitxor : 按位异或 (相当于c的 ^)
    bitcmp : 取反 (相当于c的 ~)
    bitget  :获取某一位
    bitset :设置某一位
    bitshift(a, -1) :右移 (相当于c的 >> )
    bitshift(a,1) :左移 (相当于c的 << )


19. 怎样判断两个矩阵完全相同
        直接是sum(A==B)结果为A的元素个数,相等否则,不相等 
20. 找到一个数在矩阵中出现的次数用
        a=[1 2 3 4;5 3 6 8;2 3 9 7];
        L=length(find(a==3))     
        还要显示坐标的话用:
find(a==3) or [r ,c] =find(a==3)
0 0
原创粉丝点击