whats wrong with this code?

1 view (last 30 days)
Muazma Ali
Muazma Ali on 12 Aug 2022
Edited: Cris LaPierre on 12 Aug 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'.

Answers (2)

Image Analyst
Image Analyst on 12 Aug 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 on 12 Aug 2022
Edited: Cris LaPierre on 12 Aug 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

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!