问题遇到的现象和发生背景
在matlab中如何把元胞数组或字符串数组替换为数字
用代码块功能插入代码,请勿粘贴截图
qd =
'A'
'A'
'A'
'B'
'B'
'C'
zd =
'B'
'C'
'D'
'D'
'C'
'D'
我想要达到的结果
把里面A变为1,B变为2,C变为3,D变为4
qd =[1;1;1;2;2;3];zd=[2;3;4;4;3;4]
在matlab中如何把元胞数组或字符串数组替换为数字
qd =
'A'
'A'
'A'
'B'
'B'
'C'
zd =
'B'
'C'
'D'
'D'
'C'
'D'
把里面A变为1,B变为2,C变为3,D变为4
qd =[1;1;1;2;2;3];zd=[2;3;4;4;3;4]
考虑使用strcmp函数吧。strcmp函数评估字符串是否相同
然后第一次,查询A在cell的哪些位置,把这些位置替换成1
第二次,查询B在cell的哪些位置,再把这些位置替换成2……
依次类推。
m=4; %有4个字符要查询
n=6; %字符串的长度为6
a=zd; %替换的原字符串数组为qd,(如果是zd,就替换成zd就好)
%这几个参数都可以看着换
text=["A","B","C","D"]; %text储存要查询的字符值
number=[1,2,3,4]; %number储存对应的数字替换值。
new=zeros(n,1); %new为新生矩阵,这里先建立一个空的备用
for i=1:m %四种字符串一共查询四遍
for k=1:n %逐行查询
judge=zeros(n,1);
judge(k)=strcmp(text(i),a(k)) ; %1的是本轮要变成number(i)的,0的是不用变的
new=new+number(i)*judge; %加在原来空的位置是0的向量上
end
end
disp(new) %new就是所需函数