4.1.1 字符串入门

【 * 例 4.1.1 -1 】先请读者实际操作本例,以体会数值量与字符串的区别。

clear %清除所有内存变量

a=12345.6789 % 给变量 a 赋数值标量

class(a) % 对变量 a 的类别进行判断

a_s=size(a) % 数值数组 a 的“大小”

a =1.2346e+004

ans =

double

a_s =

1 1

b='S' %给变量 b 赋字符标量(即单个字符)

class(b) % 对变量 b 的类别进行判断

b_s=size(b) % 符号数组 b 的“大小”

b =S

ans =

char

b_s =

1 1

whos %观察变量 a,b 在内存中所占字节

Name Size Bytes Class

a 1x1 8 double array

a_s 1x2 16 double array

ans 1x4 8 char array

b 1x1 2 char array

b_s 1x2 16 double array

Grand total is 10 elements using 50 bytes

4.1.2 串数组的属性和标识

【 * 例 4.1.2 -1 】本例演示:串的基本属性、标识和简单操作。

(1)创建串数组

a='This is an example.'a =This is an example.

(2)串数组 a 的大小

size(a)ans =1 19

(3)串数组的元素标识

a14=a(1:4) %提出一个子字符串

ra=a(end:-1:1) % 字符串的倒排

a14 =This

ra =

.elpmaxe na si sihT

(4)串数组的 ASCII 码

ascii_a=double(a) %产生 ASCII 码

ascii_a =Columns 1 through 12

84 104 105 115 32 105 115 32 97 110 32 101

Columns 13 through 19

120 97 109 112 108 101 46

char(ascii_a) %把 ASCII 码变回字符串

ans =This is an example.

(5)对字符串 ASCII 码数组的操作

%使字符串中字母全部大写

w=find(a>='a'&a<='z'); % 找出串数组 a 中,小写字母的元素位置。

ascii_a(w)=ascii_a(w)-32; % 大小写字母 ASCII 值差 32. 用数值加法改变部分码值。

char(ascii_a) % 把新的 ASCII 码翻成字符

ans =THIS IS AN EXAMPLE.

(6)中文字符串数组

A='这是一个算例。 '; % 创建中文字符串

A_s=size(A) % 串数组的大小

A56=A([5 6]) % 取串的子数组

ASCII_A=double(A) % 获取 ASCII 码

A_s =1 7

A56 =

算例

ASCII_A =

Columns 1 through 6

54754 51911 53947 47350 52195 49405

Column 7

41379

char(ASCII_A) %把 ASCII 码翻译成字符

ans =这是一个算例。

(7)创建带单引号的字符串

b='Example ''4.1.2 -1'''

b =Example ' 4.1.2 -1'

(8)由小串构成长串

ab=[a(1:7),' ',b,' .'] %这里第 2 个输入为空格串

ab =This is Example ' 4.1.2 -1' .

4.1.3 复杂串数组的创建

4.1.3.1 多行串数组的直接创建

【 * 例 4.1.3 .1-1 】多行串数组的直接输入示例。

clearS=['This string array '

'has multiple rows.']

S =This string array

has multiple rows.

size(S)ans =18

4.1.3.2 利用串操作函数创建多行串数组

【 * 例 4.1.3 .2-1 】演示:用专门函数 char , str2mat , strvcat 创建多行串数组示例。

S1=char('This string array','has two rows.')S1 =This string array

has two rows.

S2=str2mat('这 ',' 字符 ',' 串数组 ',' 由 4 行组成 ')

S2 =这

字符

串数组

由4 行组成

S3=strvcat('这 ',' 字符 ',' 串数组 ',' ',' 由 4 行组成 ')% “空串”会产生一个空格行

S3 =这

字符

串数组

由 4 行组成

size(S3)ans =5 5

【*例4.1.3 .2-1】的补充

(1)创建一个二维字符数组animal

>> Animal=[‘dog’;’monkey’];

??? Error using ==> vertcat

CAT arguments dimensions are not consistent.

>> Animal=['dog';'monkey']; %创建成功

说明:创建二维字符数组时,字符数组要求每行字符含有相同的列。当多行字符串具有不同长度时,为了避免出现错误,用户需要在较短的字符串中添加空格,以便保证较短字符串与最长字符串等长。

(2)用char函数创建字符数组,该方法不需要所有字符串等长

>> Animal = char(‘dog’,’monkey’);

4.1.3.3 转换函数产生数码字符串

【 * 例 4.1.3 .3-1 】最常用的数组 / 字符串转换函数 int2str , num2str , mat2str 示例。

(1) int2str 把整数数组转换成串数组(非整数将被四舍五入园整后再转换)

A=eye(2,4); %生成一个

数值数组

A_str1=int2str(A) % 转换成

串数组。请读者自己用 size 检验。

A_str1 =1 0 0 0

0 1 0 0

(2) num2str 把非整数数组转换为串数组(常用于图形中,数据点的标识)

rand('state',0)B=rand(2,4); % 生成数值矩阵

B3=num2str(B,3) % 保持 3 位有效数字,转换为串

B3 =0.95 0.607 0.891 0.456

0.231 0.486 0.762 0.0185

(3) mat2str 把数值数组转换成输入形态的串数组(常与 eval 指令配用)

B_str=mat2str(B,4) %保持 4 位有效数字,转换为“数组输入形式”串

B_str =[0.9501 0.6068 0.8913 0.4565;0.2311 0.486 0.7621 0.0185]

Expression=['exp(-',B_str,')']; %相当于指令窗写一个表达式 exp(-B_str)

eval(Expression) % 把 exp(-B_str) 送去执行

ans =0.3867 0.5451 0.4101 0.6335

0.7937 0.6151 0.4667 0.9817

【 * 例 4.1.3 .3-2 】综合例题:在 MATLAB 计算生成的图形上标出图名和最大值点坐标。

clear %清除内存中的所有变量

a=2; % 设置衰减系数

w=3; % 设置振荡频率

t=0:0.01:10; % 取自变量采样数组

y=exp(-a*t).*sin(w*t); % 计算函数值,产生函数数组

[y_max,i_max]=max(y); % 找最大值元素位置

t_text=['t=',num2str(t(i_max))]; % 生成最大值点的横坐标字符串 <7>

y_text=['y=',num2str(y_max)]; % 生成最大值点的纵坐标字符串 <8>

max_text=char('maximum',t_text,y_text);% 生成标志最大值点的字符串 <9>

% 生成标志图名用的字符串

tit=['y=exp(-',num2str(a),'t)*sin(',num2str(w),'t)']; %<11>

plot(t,zeros(size(t)),'k') % 画纵坐标为 0 的基准线

hold on % 保持绘制的线不被清除

plot(t,y,'b') % 用兰色画 y(t) 曲线

plot(t(i_max),y_max,'r.','MarkerSize',20) % 用大红点标最大值点

text(t(i_max)+0.3,y_max+0.05,max_text) % 在图上书写最大值点的数据值 <16>

title(tit),xlabel('t'),ylabel('y'),hold off% 书写图名、横坐标名、纵坐标名

图 4.1.3 .3-1 字符串运用示意图

4.1.3.4 利用元胞数组创建复杂字符串

【 * 例 4.1.3 .4-1 】元胞数组在存放和操作字符串上的应用。

a='MATLAB 5 ';b='introduces new data types:'; %创建单行字符串 a,b

c1=' ◆ Multidimensional array';c2=' ◆ User-definable data structure';

c3=' ◆ Cell arrays';c4=' ◆ Character array';

c=char(c1,c2,c3,c4); % 创建多行字符串 c

C={a;b;c}; % 利用元胞数组存放长短不同的字符串 <5>

disp([C{1:2}]) % 显示前两个元胞中的字符内容 <6>

disp(' ') % 显示一行空白

disp(C{3}) % 显示第 3 个元胞中的字符内容 <8>

MATLAB 5 introduces new data types:◆ Multidimensional array

◆ User-definable data structure

◆ Cell arrays

◆ Character array

4.1.4 串转换函数

【 * 例 4.1.4 -1 】 fprintf, sprintf, sscanf 的用法示例。

rand('state',0);a=rand(2,2); %产生

随机阵

s1=num2str(a) % 把数值数组转换为串数组

s_s=sprintf('%.10e\n',a) %10 数位科学记述串 , 每写一个元素就换行。

s1 =0.95013 0.60684

0.23114 0.48598

s_s =

9.5012928515e-001

2.3113851357e-001

6.0684258354e-001

4.8598246871e-001

fprintf('%.5g \\',a) % 以 5 位数位最短形式显示。不能赋值用

0.95013\0.23114\0.60684\0.48598\s_sscan=sscanf(s_s,'%f',[3,2])%浮点格式把串转换成成

数值数组。

s_sscan =0.9501 0.4860

0.2311 0

0.6068 0

matlab中字符串,MATLAB字符串数组相关推荐

  1. 如何使用matlab中的胞元数组

    胞元数组(cell Arry)的基本组分是胞元(cell),每个胞元本身在数组中是平等的,只能以下标区分.胞元可以存放任何类型.任何大小的数组,如任意维数值数组.字符串数组.符号对象等,而且同一个胞元 ...

  2. Matlab中的元胞数组(cell)

    元胞数组(Cell Array)将类型不同的相关数据集成到一个单一的变量中,使得大量相关数据的引用和处理变得简单方便.cell元胞数组,存储不同类型的数据. A cell array is a col ...

  3. Matlab中的元胞数组

        元胞数组(Cell Array)将类型不同的相关数据集成到一个单一的变量中,使得大量相关数据的引用和处理变得简单方便.也就是说cell元胞数组,存储不同类型的数据. 1.元胞数组的创建     ...

  4. MATLAB中判断两字符串是否相等

    1.获取字符串的函数:input() str = ('请输入内容','s'); (ps:MATLAB中使用变量之前不用声明) 此时str即为输入的字符串. 2. 获取字符串的长度的函数:strleng ...

  5. matlab中 注意事项--字符串

    Matlab中的字符串操作 原文链接:http://hi.baidu.com/dreamflyman/item/bd6d8224430003c9a5275a9f (1).字符串是以ASCII码形式存储 ...

  6. matlab rand字符串,在MatLab中生成随机字符串

    所以这里有一个解决方案,它提供满足以下规则的所有字符串: 起始和结束字符必须来自字符串: start_end_char= 'jqvfxgbdz'; 长度必须在4到8个字符之间 该字符串必须顺序正确 . ...

  7. matlab中比对字符串是否完全一致_MATLAB字符串比较总结

    % 字符串处理 a=' a';b='b b';c='cccc';m='' % 获取字符串长度 length(a) % 连接两个字符串,每个字符串最右边的空格被裁切 d=strcat(a,c) leng ...

  8. MATLAB中的结构体数组(struct)学习笔记

    不要失却热情,不要丢掉冠军的心! MALAB中的结构体(struct)数组学习笔记 前言 1. 版本 2. 关键词 一.Struct结构体数组概述 二.Struct结构体数组基本用法 1. 结构体的创 ...

  9. matlab中fdyn,Matlab的用法总结

    1. 对序列进行洗牌 randperm() randperm()产生随机的序列 %if filepaths 是一个5*1的结构体,then cshuffle = randperm(length(fil ...

  10. matlab中facedetector,Matlab人脸检测方法(Face Parts Detection)详解

    今天同学让我帮忙制作一个人脸表情识别的样本库,其中主要是对人脸进行裁剪,这里用到了一个相对较新的Matlab人脸检测方法Face Parts Detection,网上百度了一下发现关于Matlab人脸 ...

最新文章

  1. 《Android应用开发入门经典(第3版)》——导读
  2. 转://点评Oracle11g新特性之动态变量窥视
  3. vsftp 安装日志
  4. 设置tomcat过期缓存
  5. 【转】TCP/IP协议到底在讲什么?【乐搏TestPro】
  6. JavaScript实现向OL列表内动态添加LI元素的方法
  7. 计算机网络(二)-性能指标
  8. 对于整数数组类的算法的终极解决方案
  9. 简述osi参考模型各层主要功能_OSI参考模型各层主要功能
  10. 剑指offer面试题57 - II. 和为s的连续正数序列(双指针)(滑动窗口)
  11. Java 实现区块链中的区块,BLOCK的实现
  12. 西班牙语dele等级_2020年西班牙语DELE考试时间一览表
  13. SpringBoot项目文件上传
  14. 河北联通烽火HG680-J机顶盒破解安装教程
  15. 计算机教师的人生格言,教师人生格言大全
  16. JAVA学习日志 关于周易数字卦的一个算法
  17. 计算机24游戏怎么玩,外媒评24款史上最好玩的策略游戏 投身宏伟场景玩到爆
  18. windows启动管理器_如何在Windows 10中打开任务管理器,方法众多,值得收藏
  19. CBoard BI 数据可视化 支持国产开源
  20. 拼音反查(转自大富翁)

热门文章

  1. php 点号作用,探讨:PHP中逗号与点号的区别
  2. 陕西咸阳协警在宾馆坐窗台与女子聊天坠楼身亡
  3. 我的世界无限法则服务器,无限法则官网预约地址戳这里 无限法则在哪预约
  4. c语言printf char数组,在C中输出二维char数组的最快方法
  5. google谷歌云盘_Google 12岁生日快乐
  6. nyoj312 20岁生日
  7. 前端工程师扭伤了,也不忘背单词!
  8. war包热更新_热更新实践:Bugly热更新打包及修复
  9. 互联网 Java 工程师面试题之Spring(二)
  10. 概率题之随机数的生成