Using Matlab App Designer, error using drop down list. Incompatible array sizes.

Im atttempting to use a drop down list to select a country, which will pull information from a website and populate an Edit Field(text). The code works for the first two countries, when I use the third I get an incompatible array size error.
data = webread('https://restcountries.com/v3.1/all');
data = webread('https://restcountries.com/v3.1/all');
app.Country_Select.Value = 'Niger';
if app.Country_Select.Value == 'Jordan'
app.SpokenLanguageEditField.Value = data{1,1}.languages;
elseif app.Country_Select.Value == 'Brazil'
app.SpokenLanguageEditField.Value = data{2,1}.languages;
else app.Country_Select.Value == 'Niger'
app.SpokenLanguageEditField.Value = data{9,1}.languages;
end
Arrays have incompatible sizes for this operation.
app.SpokenLanguageEditField.Value

 採用された回答

Voss
Voss 2023 年 7 月 17 日
Instead of using == to compare character vectors, use strcmp.
val = app.Country_Select.Value;
if strcmp(val,'Jordan')
idx = 1;
elseif strcmp(val,'Brazil')
idx = 2;
else
idx = 9;
end
app.SpokenLanguageEditField.Value = data{idx,1}.languages;
== compares element-by-element, i.e., character-by-character in this case since you're comparing character vectors, so the number of elements must be the same, i.e., the character vectors must be the same length. If the character vectors are not the same length, as in 'Niger' == 'Jordan', you'll get the error you got.
You could also use switch/case.
val = app.Country_Select.Value;
switch val
case 'Jordan'
idx = 1;
case 'Brazil'
idx = 2;
otherwise
idx = 9;
end
app.SpokenLanguageEditField.Value = data{idx,1}.languages;

5 件のコメント

Aaron
Aaron 2023 年 7 月 17 日
I'll try using Switch, thank you!
Voss
Voss 2023 年 7 月 17 日
You're welcome! Any questions, let me know. Otherwise, if this answer works, please "Accept This Answer". Thanks!
Aaron
Aaron 2023 年 7 月 17 日
I'm attempting to use the Switch command now in App Designer, and I am recieving an error code that the 'Value' must be a character or string scalar. When running the code in a script it displays the result as a 'struct'. I'm quite new to Matlab, do I need to convert this to a character vecotr?
Aaron
Aaron 2023 年 7 月 17 日
I believe I figured it out, thank you again for your help and rapid response!
Voss
Voss 2023 年 7 月 17 日
You're welcome! Glad you got it working!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeData Type Identification についてさらに検索

製品

リリース

R2022b

質問済み:

2023 年 7 月 17 日

コメント済み:

2023 年 7 月 17 日

Community Treasure Hunt

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

Start Hunting!

Translated by