Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 字符串到矩阵的单元格数组_String_Matlab_Matrix_Cell Array - Fatal编程技术网

String 字符串到矩阵的单元格数组

String 字符串到矩阵的单元格数组,string,matlab,matrix,cell-array,String,Matlab,Matrix,Cell Array,A是一个单元格数组,我想从A创建一个矩阵,如果单元格是A,矩阵显示1,如果是b,矩阵中显示为2,对于c,矩阵显示为3 谢谢。很简单: A = {'a','b','c','b','a',...} 对于字母与数字1、2、3的一般关联…: result = cell2mat(A)-'a'+1 letters2numbers = 'abc'; %// 'a'->1, 'b'->2 etc. [~, result] = ismember(cell2mat(A), letters2numb

A
是一个
单元格数组,我想从
A
创建一个矩阵,如果单元格是
A
,矩阵显示1,如果是
b
,矩阵中显示为2,对于
c
,矩阵显示为3

谢谢。

很简单:

A = {'a','b','c','b','a',...}

对于字母与数字1、2、3的一般关联…:

result = cell2mat(A)-'a'+1
letters2numbers = 'abc'; %// 'a'->1, 'b'->2 etc.
[~, result] = ismember(cell2mat(A), letters2numbers)

对于字符串与数字1,2,3的一般关联…:

result = cell2mat(A)-'a'+1
letters2numbers = 'abc'; %// 'a'->1, 'b'->2 etc.
[~, result] = ismember(cell2mat(A), letters2numbers)
在这个例子中

strings2numbers = {'hi', 'hello', 'hey', 'good morning', 'howdy'};
A = {'hello', 'hi', 'hello', 'howdy', 'bye'};
[~, result] = ismember(A, strings2numbers)

具体案例

对于问题中列出的简单特定情况,可以使用将所有单元格元素转换为字符,然后从中减去
96
,这是与
'a'-1
-

result =
     2     1     2     5     0 
样本运行-

A_numeric = char(A)-96

一般情况

对于一般的替换情况,您需要像这样做更多的工作-

>> A
A = 
    'a'    'b'    'c'    'b'    'a'
>> A_numeric = char(A)-96
A_numeric =
     1
     2
     3
     2
     1
样本输入输出-

%// Inputs
A = {'correct','boss','cat','boss','correct','cat'}
newcellval = {'correct','cat','boss'}
newnumval = [8,2,5]

[unqcell,~,idx]  = unique(A,'stable')
[~,newcell_idx,unqcell_idx] = intersect(newcellval,unqcell,'stable')
A_numeric = newnumval(changem(idx,newcell_idx,unqcell_idx))

使用一个For循环,该循环迭代一个字符并将字符转换为数字

>> A,newcellval,newnumval
A = 
    'correct'    'boss'    'cat'    'boss'    'correct'    'cat'
newcellval = 
    'correct'    'cat'    'boss'
newnumval =
     8     2     5
>> A_numeric
A_numeric =
     8     5     2     5     8     2

我希望它能工作。

工作得很好,但是如果单元格中包含一个“单词”,如“correct”,该怎么办?@chinkare_16认为您可以使用
unique
在这种情况下-
[~,~,out]=unique(a,'stable')
。但是,然后映射到什么,您需要确定。
for
循环不是必需的。这可以通过矢量化来实现。见Divakar的答案。