# transform exponential number to decimal

8 visualizzazioni (ultimi 30 giorni)
Alberto Acri il 11 Set 2023
Risposto: Steven Lord il 11 Set 2023
Hi. I have the following cell:
M1 = importdata("M1.mat");
A = compose('%d (%2d%%)', [M1(:,1), M1(:,2)]);
How can I turn exponential numbers (inside the brackets) into decimal numbers?
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Risposta accettata

David Hill il 11 Set 2023
M1 = importdata("M1.mat");
A = compose('%d (%3.2f%%)', [M1(:,1), M1(:,2)])
A = 5×1 cell array
{'81 (6.18%)' } {'82 (7.51%)' } {'83 (9.03%)' } {'84 (10.20%)'} {'85 (9.43%)' }
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Più risposte (1)

Steven Lord il 11 Set 2023
Use a different format specifier. The second column of your data doesn't contain integer values, so using %d for that column is not the right thing to do. Let's try %g instead and specify that you want three significant figures. See the documentation for the formatSpec input argument to the compose function for more information about the different format specifiers you can use.
% Sample data
M1 = [81, 6.18; 82, 7.51; 83, 9.03; 84, 10.2]
M1 = 4×2
81.0000 6.1800 82.0000 7.5100 83.0000 9.0300 84.0000 10.2000
S = compose("%d (%3g%%)", M1)
S = 4×1 string array
"81 (6.18%)" "82 (7.51%)" "83 (9.03%)" "84 (10.2%)"
FYI while your result was stored in a cell array, I used double quotes in my call to the compose command to create a string array instead.
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Categorie

Scopri di più su System Composer in Help Center e File Exchange

R2021b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by