data=load('路径\文件.xls');
data=xlsread('路径\文件.xls');

load是用来读取文档,类似于.log .txt等等
图像直接读取用imread('文件名')
但是如果图像已经存在.mat文档里了
如存在矩阵a里面
S = load(文件名, '-mat', a)
即可读取已经存在.mat的图像。

图像具体读到的地方是你的工作空间,workspace。可以打开这个工作空间窗口查看。
例如 a = imread('x.jpg')
读好以后就存在变量a了。

MATLAB 读写excel数据

1、读取当前路径下的excel表格,存储数据,文字字符

  [number,txt,raw]=xlsread(‘file.xls’);

 其中:file为所要读取的excel;

       中含有file.xls中的数据,不包含表头,如果遇到有非数字的字符则为NaN;

       中含有file.xls中的所有非数字字符,包含表头,遇见数字则为空字符;

        raw中存储的是file.xls中的原始数据,不做任何处理,也包含表头。

 注1:输入参数中.xls可以不写;输出参数可以缺省,只有一个参数只取数字,两个含字符;

 注2:文件名和表格中的内容均允许有汉字的存在。

 例1:当前路径下有名为0520的excel表格。其中内容如下图1:

表1  0520.xls中的内容

  在MATLAB中执行命令:[number,txt,raw]=xlsread('0520')

 

2、读取指定路径下的excel表格,存储数据,文字字符

 

 其中:address为所要读取的excel表格的地址;

       中含有表格中的数据,不包含表头,如果遇到有非数字的字符则为NaN;

       中含有表格中的所有非数字字符,包含表头,遇见数字则为空字符;

        raw中存储的是表格中的原始数据,不做任何处理,也包含表头。

 例2:[number,txt,raw]=xlsread('D:\My Documents\MATLAB\shudu\0520')

        结果如上面图2。

 注1:本例中的表格将英文改成汉字,验证效果是一样的,MATLAB读表允许汉字存在。

 

3、读取指定表格指定区域的内容

  [number,txt,raw]=xlsread('file.xls or address','Sheet','range')

 其中:‘Sheet1’是指定页数的表格,可以是自命名,如‘初级题40’;

        ‘a1:c3’是读取的范围,是从a1到c3的矩形区域;

        其他输入输出参数与前面一致。

 注1:里面的‘Sheet1’和‘sheet1’,‘a1:c3’和‘A1:C3’效果等同,即不区分大小写

 例3:[number,txt,raw]=xlsread('0520','Sheet1','a1:c3')

  

 

4、读取区域含有空白或者字符,需要用特定数值替代

  对于所读取的数据有时达不到自己的需求,比如,表格中有空白位置,读出来就是“NaN”,例如本人所要做的数独解题,题目中只有部分位置是非零数字,其余为空白待填,这时xlsread命令会直接将表格中的空白位置用“NaN”替代,如下图4(1):

  数独题目.xls','a121:i129')

 

  由上面结果可知,“NaN”替代了所有空白位置。但这样有时并不适合进行MATLAB运算,比如填数独就是。这时需要将这些空白位置用特定的值替代,这里我们可以用以下命令将空白位置全部赋成0


  注1:isnan函数判断是否为nan,是返回1,否则返回0。

 

5、动态区域读取

  前面所读取的excel区域是固定的,比如是‘Sheet1’的‘A1:C3’,但可能会碰到区域不是固定的,比如我要随机选取数独题,事先无法得知选哪个题,也就无法确定范围,这时就碰到如何读取动态区域的问题。方法其实和前面类似,关键是获取动态的字符串即可。如果需要获取动态区域的数值,需要用到字符串转换将数字转成字符串。

  例5:数独难度有“初级”、“高级”、“专家级”和“骨灰级”,放在excel表“数独题目”中,每个级别有40个题目。先让用户选取难度即被,再随机选取1到40题中的一题。

  步骤如下:

  选取难度,可以用menu命令制作选取菜单

lever = menu('select a lever','primary','senior','experts','hardcore');
     switch lever
         case 1
           初级题40';
            disp('you choose lever: primary!');
         case 2
           高级题40';
            disp('you choose lever: senior! ');
         case 3
           专家题40';
            disp('you choose lever: experts! ');
         case 4
           骨灰题40';
            disp('you choose lever: hardcore! ');
     end

 

  :随机选题,确定题号和起始位置

n=randint(1,1,[1,40]);  选取1到40中的随机数一个
  
   start=(n-1)*10+1;        确定起始位置
 
  :获取区域的动态字符串,使用字符串拼接,需要将数字转成字符
  
   cxd2=num2str(start);    数字转字符

  

   cxd=[cxd1 cxd2 cxd3 cxd4 cxd5]; 动态区域

 

  :读取表格,并把空白位置置零

  暂存\数独大全\数独题目.xls',sheet,cxd);

  

 

  结果如下图5(1)和5(2):先从菜单选取“primary”,抽中第37题。

 

 

6、数据写入excel中

   方法和读取类似,不再说明,直接上例子

 例6,将数独求解结果写入excel中,页不变,行不变,列向右移6格的区域中

    

zxc2=num2str(start);

    

    

    暂存\数独大全\数独题目.xls',A,sheet,zxc);

其中:xlswrite第一个参数为表格名,或者地址

       第二个参数“A”,为要写入的数据

       第三个参数“sheet”为表格页,与前面读取时同一个值

       第四个参数“zxc”为写入区域,获取方法同样是字符串拼接。

数独题求解后结果写入excel中,如下图6