whats wrong with this code?

2 vues (au cours des 30 derniers jours)
Muazma Ali
Muazma Ali le 12 Août 2022
Modifié(e) : Cris LaPierre le 12 Août 2022
Edit: added type statement to make code visible
Hi!
When I run similar code I get this error message saying:
type('assigning_values_to_character_arrays.m')
function assigning_values_to_character_arrays() nr_zones_analyzed=0; antall_soner=3; while nr_zones_analyzed<antall_soner % Here I actually have some functions that determines best_salt_1 and % best_salt_2 best_salt_1=input('Enter best_salt_1: ', 's'); best_salt_2=input('Enter best_salt_2: ', 's'); nr_zones_analyzed=nr_zones_analyzed +1; the_best_salt_1=string(best_salt_1); the_best_salt_1(nr_zones_analyzed)= string(best_salt_1); the_best_salt_2=string(best_salt_2); the_best_salt_2(nr_zones_analyzed)=string(best_salt_2); end for j= 1: antall_soner S1= the_best_salt_1(j); S2= the_best_salt_2(j); C{j}=sprintf('%s %s',S1,S2); end combination_of_salts=char(C{:}) end
Error using sprintf
Unable to convert 'string' value to 'char'.

Réponses (2)

Image Analyst
Image Analyst le 12 Août 2022
I'd use character arrays instead of strings and a for loop instead of a while loop:
function assigning_values_to_character_arrays()
antall_soner = 3;
C = cell(antall_soner, 1)
for k = 1 : antall_soner
% Here I actually have some functions that determines best_salt_1 and best_salt_2
best_salt_1{k} = input('Enter best_salt_1: ', 's');
best_salt_2{k} = input('Enter best_salt_2: ', 's');
C{k} = sprintf('%s %s',best_salt_1{k}, best_salt_2{k});
end
combination_of_salts=char(C{:})
end

Cris LaPierre
Cris LaPierre le 12 Août 2022
Modifié(e) : Cris LaPierre le 12 Août 2022
I think this error may just mean you may just need to clear your workspace before running your code. At least I was able to reproduce after turning your function into a script and running it a couple times.
I would symplify your code to the following, keeping everything as strings.
antall_soner=3;
for nr_zones_analyzed = 1:antall_soner
% Here I actually have some functions that determines best_salt_1 and
% best_salt_2
best_salt_1=input('Enter best_salt_1: ', 's');
best_salt_2=input('Enter best_salt_2: ', 's');
C(nr_zones_analyzed,1) = string(best_salt_1) + " " + string(best_salt_2);
end
combination_of_salts=C

Catégories

En savoir plus sur Characters and Strings dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by