How to replace all the ones in a matrix with the string 'hey'?
    2 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    oshawcole
 il 4 Dic 2017
  
    
    
    
    
    Commentato: Walter Roberson
      
      
 il 6 Dic 2017
            matrix= [1 0 0.1 0.001 4; 5.9 2.1 3.15 8.95 1.11]
All the ones should be replaced with 'hey'
This is my code
matrix= [1 0 0.1 0.001 4; 5.9 2.1 3.15 8.95 1.11];
matrix= num2str(matrix);
matrix(matrix=='1') = 'h'
when I replace 'h' with 'hey' it gives me this error
 matrix(matrix=='1') = 'hey'
I have just started to learn MATLAB. please help
0 Commenti
Risposta accettata
  Walter Roberson
      
      
 il 5 Dic 2017
        newmatrix = num2cell(matrix);
newmatrix(matrix == 1) = {'hey'};
8 Commenti
  Walter Roberson
      
      
 il 6 Dic 2017
				It is possible to do in one line, but it gets so messy that it is not recommended.
Here is a way to do it with the assistance of a helper function.
IDXAT = @(M,IDX) M(IDX);
disp(IDXAT(cat(3,num2cell(matrix),repmat({'hey'},size(matrix))), reshape(1:numel(matrix), size(matrix))+numel(matrix)*(abs(matrix)==1)))
The output would look like
    'hey'    [  0]    'hey'     [0.001]    [   4]
    [5.9]    'hey'    [3.15]    'hey'      [1.11]
I am not sure that is acceptable to you.
Più risposte (1)
  John D'Errico
      
      
 il 4 Dic 2017
        You can't. A matrix is composed of numbers. You cannot insert a string for some elements, replacing an arbitrary numeric element.
0 Commenti
Vedere anche
Categorie
				Scopri di più su Characters and Strings in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


