matlab补习之一

链接:http://note.youdao.com/share/?id=6e93287a528f09fab6bba8f0d570b2b5&type=note

最近写了几行代码,好久没用过matlab了,常见的操作都找老半天资料,还是先记下来吧,以后用得着

20121012

1.Matlab如何修改矩阵中特定位置的值
         

比如有个矩阵A=[2 3 4 5 ;6 7 8 9]; 我用find找出我想要修改的元素位置,比如找出row=[1 ; 2] ; col=[3 ; 4] ;

index=sub2ind(size(A),row,col);
A(index)=0  
or 
 B = rand(3);
 ind = find(B < 0)
 B(ind)=0;
就将B中的负数均变成0了
or 
(B > 0) .* B

2.矩阵分块
c = mat2cell(x, rowDist, colDist)
c = mat2cell(x, dim1Dist, dim2Dist,..., dimNDist)
例子:
N=16;   %16*16
A=magic(N)
M=4;   %分解成4*4
B=mat2cell(A,ones(N/M,1)*M,ones(N/M,1)*M)
B{1}
B{1,3}
这样引用即可
3.size(A)可以得到矩阵A的大小
length(size(A))可以得到矩阵A的维数
4.分块矩阵拼接为大矩阵
求助:Matlab这种分块矩阵怎么定义B=
A11  A12  ......A1n
A21  A22  ......A2n
...................
An1  An2  .......Ann
其中Aij 为方阵这个怎么定义

Aij都为10阶方阵用cell array(单元阵列)以及cell2mat()函数如:

n=8; T=cell(n);%创建单元阵列T,n*n大小 for i=1:n for j=1:n     Aij=input(['please input matrix A' num2str(i) num2str(j)]) T{i,j}=Aij; end end B=cell2mat(T)%将单元阵列转换为数值矩阵

%c = mat2cell(x, [10 20 30], [25 25])

5.二值化图像函数主要有dither和im2bw函数。

dither 函数通过颜色抖动来达到转换图像的目的。

语法:BW = dither(I)。 Image 是图像矩阵资料,BW 是二值化图像矩阵

im2bw 函数通过对灰度值进行阈值判断的方法达到目的。greater than level with the value
1 (white) and replaces all other pixels with the value 0 (black).
level是[0,1]之间,比它大的设为1白色,比它小的设为0黑色。或者
I = imread('coins.png');
level = graythresh(I);
BW = im2bw(I,level);
imshow(BW)
语法:BinaryImage = im2bw( Image, [Level] )。Image 是输入图像矩阵资料,Level 是二值化程度值,其为介于0到1之间值,BW 是二值化图像矩阵。
6.MATLAB读取一个文件夹中的所有文件
   
   

假如读取F盘English文件夹中的所有bmp图片:

Files = dir(strcat('F:\\english\\','*.bmp')); LengthFiles = length(Files); for i = 1:LengthFiles; Img = imread(strcat('F:\english\',Files(i).name)); %自己写图像处理函数 ImgProc(Img); end

或者:

path=cd;%获取当前文件路径 file=ls([path, '\*.txt']);%文件名 filepath=[path file];%合并路径及文件名 有了完整路径及文件名就可以打开文本了。

7.数据类型转换uint8(img)

8.终止运行; ctrl+c,终止调试shift+F5

9.imresize:按比例缩放图片。

reshape:改变矩阵形状

>> img = imread('Image_224.bmp');//480*640

>> im = reshape(img,[480*640 3]); >> imm = reshape(im,[480 640 3]); >> a = img - imm; >> a=a(:);//全为0

10.matlab命令窗口显示相关小知识

1.命令窗口里,清屏命令:clc;

2.m文件里,清屏命令:clear;

3.如果要显示某个中间执行过程,不加分号(;)即可,如果不要显示某个中间过程,加分号(;)即可;

4.不要显示warning信息时,只需在m文件开头部分加warning off all;

5.matlab监测运行时间是m文件开头用tic,末尾用toc;

6.matlab监测运行时死循环暂停ctrl+c或者是ctrl+pause;

7.写一个与窗口显示无关的知识:matlab的函数名不一定要与.m文件的文件名一样,调用时以.m文件文件名为准,就算函数有参数,也以.m文件名为准;

11.saveas命令格式等四种,saveas(gcf,‘myfig.jpg’)

gcf是图形句柄,后面的名字可以带路径

下面是链接

Matlab中图片保存的四种方法

12.一个比较杂的知识博客嘿嘿
13.把这些图片重叠在一起,并且与原先图片大小一样(经imread处理后是512x512的)
I=ones(512,512); for i=0:9 for j=0:9 J=imread(['D:\MATLAB6p5\work\A01BMP\',int2str(i),int2str(i),'.bmp']); I=I & J; end end
20121015
之一结束,开始之二


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值