Q
单元阵列到矩阵
0
A
回答
2
这很简单:
result = cell2mat(A)-'a'+1
对于通用协会字母以数字1,2,3 ...:
letters2numbers = 'abc'; %// 'a'->1, 'b'->2 etc.
[~, result] = ismember(cell2mat(A), letters2numbers)
对于generic associati在字符串以数字1,2,3 ...的:
strings2numbers = {'hi', 'hello', 'hey', 'good morning', 'howdy'};
A = {'hello', 'hi', 'hello', 'howdy', 'bye'};
[~, result] = ismember(A, strings2numbers)
在这个例子中,
result =
2 1 2 5 0
4
具体案例
对于一个简单的特殊情况下上市这个问题,你可以使用char
将所有单元格元素转换为字符,然后从中减去96
,这相当于'a'-1
-
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))
样品输入 - 输出 -
>> 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
1
使用for循环,其迭代A和转换字符数
for loop = 1:length(A)
outMat(loop) = char(A(loop)) - 96
end
我希望它的作品。
+0
'for'循环是没有必要的。这可以做矢量化。见Divakar的答案。 – rayryeng
相关问题
- 1. 迭代矩阵到单元阵列中
- 2. 单元阵列(不同大小的单元格)到矩阵
- 3. 如何访问单元阵列矩阵?
- 4. 在单元阵列中乘以矩阵
- 5. MATLAB:3D矩阵单元阵列转换
- 6. MATLAB:乘法2D矩阵与3D矩阵单元阵列
- 7. 阵列到矩阵
- 8. 使用MATLAB将矩阵向量整合到单元阵列中?
- 9. 转换向量单元阵列到二维矩阵 - MATLAB
- 10. 将矩阵的部分提取到单元阵列中
- 11. 如何从列索引矩阵设置矩阵的单元格
- 12. 将单元分成单列矩阵
- 13. R:从矩阵到列表到矩阵:订单问题
- 14. MATLAB使用单元阵列中的元素填充矩阵
- 15. Matlab 2x2矩阵的阵列和逐元矩阵/向量乘法
- 16. 矩阵与元素的矩阵元素
- 17. Haskell阵列(矩阵)元素访问
- 18. 列表到矩阵
- 19. 阵列矩阵numpy
- 20. Java矩阵阵列
- 21. 矩阵阵列C#
- 22. Matlab - 矩阵阵列
- 23. C#矩阵到Android矩阵?
- 24. 转换单元在矩阵
- 25. 单元阵列
- 26. 单元阵列
- 27. 将字符串转换的单元阵列与数阵列以矩阵
- 28. 追加单元行到矩阵
- 29. Matlab:单元格到矩阵行
- 30. Matlab将矩阵合并到单元格
工作得非常好,但如果单元格包含“正确”之类的“单词”会怎么样? –
@ chinkare_16认为你可以在这种情况下使用'unique' - '[〜,〜,out] = unique(A,'stable')'。但是,什么映射到什么,你需要做出决定。 – Divakar