replacing numbers with alphabets/letters in a matrix
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
ANINDYA GANGULY
am 8 Nov. 2021
Kommentiert: ANINDYA GANGULY
am 8 Nov. 2021
I have a excel sheet (attached file) consiting of 4000 numbers (1 to 4000). I want to replace 1, 5, 9 ...3997 and 2, 6, 10...3998 with C and 3, 7, 11...3999 and 4,8, 12...4000 with H. Can a code be devised where this task can be performed such that the output file/data is represented in the same array/format as the given input? And can the code be made universal so that we can carry forth similar tasks with other arrays?
Looking forward for an answer and thank you for all your help.
Regards
J
1 Kommentar
Akzeptierte Antwort
Akira Agata
am 8 Nov. 2021
One possible straight-forward solution would be like this:
M = readmatrix('testfile_0.50.xlsx');
C = cell(size(M));
idx = ismember(M,[1:4:3997, 2:4:3998]);
C(idx) = {'C'};
idx = ismember(M,[3:4:3999, 4:4:4000]);
C(idx) = {'H'};
writecell(C,'output.xlsx');
Weitere Antworten (1)
Walter Roberson
am 8 Nov. 2021
Bearbeitet: Walter Roberson
am 8 Nov. 2021
filename = 'https://www.mathworks.com/matlabcentral/answers/uploaded_files/793759/testfile_0.50.xlsx';
outfile = "testout.xlsx";
data = readmatrix(filename);
newdata = cell(size(data));
mask = isnan(data);
newdata(mask) = {nan};
mask = ismember(mod(data,4), [1 2]);
newdata(mask) = {'C'};
mask = ismember(mod(data,4), [3 0]);
newdata(mask) = {'H'};
writecell(newdata, outfile);
%testing to see if the output looks ok
readback = readtable(outfile);
readback(10:20,:)
I tested on my system, and excel does show those 0x0 char and NaN entries as empty cells.
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!