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