How to replace matrix value with string from cell array?
Afficher commentaires plus anciens
I have a cell array of string and a data matrix. How do I replace the value in the data matrix with the strings marked by ‘#’. I want the output to be a cell array of strings like the “output” in the script below.
cell = {
'# 2.537' '1.219' '0.457' '0.214' '# 0.120' '0.245'
'3.244' '# 1.400' '0.649' '0.515' '0.207' '0.075'
'2.993' '1.282' '0.605' '0.309' '0.140' '0.140'
'3.278' '1.507' '0.885' '0.405' '0.160' '0.111'
'3.691' '1.474' '0.650' '0.316' '0.180' '0.155'}
data=[
0.8147 0.0975 0.1576 0.1419 0.6557 0.7577
0.9058 0.2785 0.9706 0.4218 0.0357 0.7431
0.1270 0.5469 0.9572 0.9157 0.8491 0.3922
0.9134 0.9575 0.4854 0.7922 0.9340 0.6555
0.6324 0.9649 0.8003 0.9595 0.6787 0.1712]
output={
'# 2.537' '0.0975' '0.1576' '0.1419' '# 0.120' '0.7577'
'0.9058' '# 1.400' '0.9706' '0.4218' '0.0357' '0.7431'
'0.1270' '0.5469' '0.9572' '0.9157' '0.8491' '0.3922'
'0.9134' '0.9575' '0.4854' '0.7922' '0.9340' '0.6555'
'0.6324' '0.9649' '0.8003' '0.9595' '0.6787' '0.1712'}
Réponse acceptée
Plus de réponses (1)
Cell is a built in function so avoid using it as a variable name. Anyway, you can try this:
mask=logical(count(cell,'#'))
data=cellstr(string(a))
data(mask)=cell(mask)
data =
5×6 cell array
{'# 2.537'} {'0.0975' } {'0.1576'} {'0.1419'} {'# 0.120'} {'0.7577'}
{'0.9058' } {'# 1.400'} {'0.9706'} {'0.4218'} {'0.0357' } {'0.7431'}
{'0.127' } {'0.5469' } {'0.9572'} {'0.9157'} {'0.8491' } {'0.3922'}
{'0.9134' } {'0.9575' } {'0.4854'} {'0.7922'} {'0.934' } {'0.6555'}
{'0.6324' } {'0.9649' } {'0.8003'} {'0.9595'} {'0.6787' } {'0.1712'}
1 commentaire
Johnny Birch
le 1 Oct 2018
Modifié(e) : Johnny Birch
le 1 Oct 2018
Catégories
En savoir plus sur Characters and Strings dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!