matlab 中num2str函数的使用

参考:
https://zhidao.baidu.com/question/431413920.html

问题描述

先前使用num2str函数只是使用了该函数最常用的功能:将数字转换为字符串,但其实该函数还有额外格式上的功能,今天使用图像批处理的时候发现一对图像的文件名有格式上的问题需要注意。
比如现在我有一个文件夹,下面有2种图像,我这里是MS和Pan,其中存在一一对应的关系。MS文件名格式为original_01.tif,……,original_id,tif;Pan文件名格式为pan_01.tif,……,pan_id.tif,我们注意到id即使是1-9之间也占了2个字符的位置。如果我们使用如下所示的代码片段遍历整个文件夹,会发现1-9编号的图像不会被访问到。

files_path = './images/';          % 图像文件夹路径
img_path_list = dir(strcat(files_path,'*.tif'));

img_num  = length(img_path_list)/2; % Pan和对应多光谱是一对

for  index = 1:img_num
        % 读取Pan和对应的多光谱图像
        gt_name = img_path_list(index).name;% 获取图像名,只得到了多光谱图像
        pan_name = ['pan_',num2str(index),'.tif'];
        disp(gt_name);   %测试
        disp(pan_name);
        disp('=============');
end

结果如下图所示,我们会发现红色框里面的内容与我们所想要的pan_01.tif格式不一致。
在这里插入图片描述

解决方法

首先介绍一下num2str函数的使用方法,然后我们就知道该如何解决上面的问题了。调用形式如下:
1)str = num2str(A) ;
将数字A转换成char类型,值得注意的是A也可以是数字类型的数组。

 a =[1,2,3,4];
 y = num2str(a);
 whos 

2)str = num2str(A, precision)
A: 数值类型的数组或者是单个的数值
precision:转换成字符穿保留的数字位数

a = [1.222222,2.11111111,3.4444444];
y=num2str(a,2)
# 结果
y =

    '1.2      2.1      3.4'

3)str = num2str(A, format)
A: 数值类型的数组或者是单个的数值
format:指定数字转换为字符串的格式,通常’%11.4g’是默认的。
也可以指定转换为几位的字符串,不足用0填充,如%02d
%03d等

a = 1;
y1 = num2str(a,'%02d'); % '01'
y2 = num2str(a,'%03d'); % '001'

看到该函数的第3种调用形式,我们就应该知道如何解决刚开始说的格式不一致的问题了。

files_path = './images/';          % 图像文件夹路径
img_path_list = dir(strcat(files_path,'*.tif'));

img_num  = length(img_path_list)/2; % Pan和对应多光谱是一对

for  index = 1:img_num
        % 读取Pan和对应的多光谱图像
        gt_name = img_path_list(index).name;% 获取图像名,只得到了多光谱图像
        pan_name = ['pan_',num2str(index,'%02d'),'.tif'];
        disp(gt_name);   %测试
        disp(pan_name);
        disp('=============');
end
  • 20
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值