matlab UITable字符数组,字符串数组,char在扩充字符数组中的应用,元胞数组

当矩阵的每一个元素都是字符数组,行向量操作会将其合并成一个字符数组,如下

[‘ni’, ‘hao’]

ans =

'nihao'

写一个两行两列的矩阵,矩阵每个元素都是字符数组,结果如下,由于字符数量不一致,报错

[‘ni’,‘hao’;‘mat’,‘lab’]
错误使用 vertcat
要串联的数组的维度不一致。

将矩阵第一个元素的字符数变成三个,正常;
[‘nii’,‘hao’;‘mat’,‘lab’]

ans =

2×6 char 数组

'niihao'
'matlab'

用char转换字符数组,显示为两行3列字符数组(注意:生成的2*3chararray, ni后面自动补充了空格的)

char(‘ni’,‘hao’)

ans =

2×3 char 数组

'ni '
'hao'

用String不能讲字符数组转换成字符串数组

string(‘ni’,‘hao’)
错误使用 string
未找到具有匹配签名的构造函数 ‘string’。

以下是一个cell数组(用花括号,不用方括号)

{‘Andrew’ 31 ‘Male’ ‘Choose’;…
‘Bob’ 41 ‘Male’ ‘Choose’;…
‘Anne’ 20 ‘Female’ ‘Choose’}

ans =

3×4 cell 数组

{'Andrew'}    {[31]}    {'Male'  }    {'Choose'}
{'Bob'   }    {[41]}    {'Male'  }    {'Choose'}
{'Anne'  }    {[20]}    {'Female'}    {'Choose'}

a={‘Andrew’ 31 ‘Male’ ‘Choose’;…
‘Bob’ 41 ‘Male’ ‘Choose’;…
‘Anne’ 20 ‘Female’ ‘Choose’}

a =

3×4 cell 数组

{'Andrew'}    {[31]}    {'Male'  }    {'Choose'}
{'Bob'   }    {[41]}    {'Male'  }    {'Choose'}
{'Anne'  }    {[20]}    {'Female'}    {'Choose'}

用花括号可以索引出其中的元素,如下

a{2,2}

ans =

41

用赋值可以替换其中的元素,而且可以将数值替换成字符数组,如下

a{2,2}=‘NIHAO’

a =

3×4 cell 数组

{'Andrew'}    {[   31]}    {'Male'  }    {'Choose'}
{'Bob'   }    {'NIHAO'}    {'Male'  }    {'Choose'}
{'Anne'  }    {[   20]}    {'Female'}    {'Choose'}

下面的语句可以给UITable赋值
myData={‘Andrew’ 31 ‘Male’ ‘Choose’;…
‘Bob’ 41 ‘Male’ ‘Choose’;…
‘Anne’ 20 ‘Female’ ‘Choose’};
app.UITable.Data= myData;

下面的语句也可以直接给UITable赋值(矩阵可以直接写入UITable)
myData=[10 31 70 80;…
90 41 100 200;…
1000 20 1 2];
app.UITable.Data= myData;

但下面这种数值矩阵中含有字符数组的不能直接写入UITable(元胞数组中数值和字符可以同时存在,矩阵中不行)
myData=[10 ‘nihao’ 70 80;…
90 41 100 200;…
1000 20 1 2];

下面的语句可以给UITable表头赋一行名称:先用char扩充字符数组的元素(见前面char的用法),然后用cellstr转化为字符串元胞数组, ;
Rowname=‘’;
Rowname=char(Rowname,‘name’);
Rowname=char(Rowname,‘age’);
Rowname=char(Rowname,‘sex’);
Rowname=char(Rowname,‘ok’);
Rownamecellstr= cellstr(Rowname); %转化为字符串元胞数组
app.UITable.ColumnName=Rownamecellstr;

看一下它生成的元胞数组 (第一个为空)
Rowname=‘’;
Rowname=char(Rowname,‘name’);
Rowname=char(Rowname,‘age’);
Rowname=char(Rowname,‘sex’);
Rowname=char(Rowname,‘ok’);
Rownamecellstr= cellstr(Rowname)

Rownamecellstr =

5×1 cell 数组

{0×0 char}
{'name'  }
{'age'   }
{'sex'   }
{'ok'    }

查看工作空间的情况
在这里插入图片描述
实际中使用的时候,为了避免用char扩充数组的时候第一个元素为空,可以用一个判断语句

if(Rowname==‘’ )
Rowname=newname ;
else
Rowname=char(Rowname, newname);
end

字符串数组用双引号
a=[“nihao”, “nihao”]

a =

1×2 string 数组

"nihao"    "nihao"

字符串数组可以转化成元胞数组

b={“nihao”, “nihao”}

b =

1×2 cell 数组

{["nihao"]}    {["nihao"]}

字符串数组不能给Table的Data命名,但是可以给行名或列命名,比如下面的语句会报错:设置类 ‘Table’ 的属性 ‘Data’ 时出错:
元胞数组中的值必须为数值、逻辑值或字符

myData={“Andrew” 31 “Male” “Choose”;…
“Bob” 41 “Male” “Choose”;…
“Anne” 20 “Female” “Choose”};
ClomnName={“name”,“age”,“sex”,“ok”};

app.UITable.Data= myData; %这个会报错
app.UITable.ColumnName=ClomnName; %这个不会报错


用string比上面用char扩充数组更方便,因为string数组方便用矩阵进行扩展,而且不会因为每个string里面的字符数不同而自动填充空格。如下:


a=[“ni”,“hao”]

a =

1×2 string 数组

"ni"    "hao"

cellstr(a)

ans =

1×2 cell 数组

{'ni'}    {'hao'}

表示矩阵


a=[“ni”,“hao”;“mat”,“lab”]

a =

2×2 string 数组

"ni"     "hao"
"mat"    "lab"

cellstr(a)

ans =

2×2 cell 数组

{'ni' }    {'hao'}
{'mat'}    {'lab'}

a=[1 2 3]

a =

 1     2     3

b=[“n”,“i”,“h”]

b =

1×3 string 数组

"n"    "i"    "h"

c=[a;b]

c =

2×3 string 数组

"1"    "2"    "3"
"n"    "i"    "h"

cellstr©

ans =

2×3 cell 数组

{'1'}    {'2'}    {'3'}
{'n'}    {'i'}    {'h'}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值