How to redefine enum values as num values to another variable?

1 回表示 (過去 30 日間)
Hasan Kaan Tuna
Hasan Kaan Tuna 2023 年 10 月 5 日
編集済み: Guillaume 2023 年 10 月 5 日
Hi,
I have the following script to convert enum signal's number values into the values i want to see on the figures. I am having the following error while running it:
>> MEAStest.tcd_enum_currentGear.Data(i)==0
Subscript indices must either be real positive integers or logicals.
How can I make it work?
i=0;
int16(MEAStest.tcd_enum_currentGear.Data);
while i<size(MEAStest.tcd_enum_currentGear.Data)+1
if MEAStest.tcd_enum_currentGear.Data(i)==0
MEAStest.tcd_n_currentGear(i)=0;
elseif MEAStest.tcd_enum_currentGear.Data(i)==11
MEAStest.tcd_n_currentGear(i)=1;
elseif MEAStest.tcd_enum_currentGear.Data(i)==22
MEAStest.tcd_n_currentGear(i)=2;
elseif MEAStest.tcd_enum_currentGear.Data(i)==33
MEAStest.tcd_n_currentGear(i)=3;
elseif MEAStest.tcd_enum_currentGear.Data(i)==44
MEAStest.tcd_n_currentGear(i)=4;
elseif MEAStest.tcd_enum_currentGear.Data(i)==55
MEAStest.tcd_n_currentGear(i)=5;
elseif MEAStest.tcd_enum_currentGear.Data(i)==66
MEAStest.tcd_n_currentGear(i)=6;
elseif MEAStest.tcd_enum_currentGear.Data(i)==77
MEAStest.tcd_n_currentGear(i)=6;
elseif MEAStest.tcd_enum_currentGear.Data(i)==88
MEAStest.tcd_n_currentGear(i)=8;
elseif MEAStest.tcd_enum_currentGear.Data(i)==90
MEAStest.tcd_n_currentGear(i)=9;
elseif MEAStest.tcd_enum_currentGear.Data(i)==160
MEAStest.tcd_n_currentGear(i)=10;
elseif MEAStest.tcd_enum_currentGear.Data(i)==161
MEAStest.tcd_n_currentGear(i)=11;
elseif MEAStest.tcd_enum_currentGear.Data(i)==162
MEAStest.tcd_n_currentGear(i)=12;
elseif MEAStest.tcd_enum_currentGear.Data(i)==163
MEAStest.tcd_n_currentGear(i)=13;
elseif MEAStest.tcd_enum_currentGear.Data(i)==164
MEAStest.tcd_n_currentGear(i)=14;
elseif MEAStest.tcd_enum_currentGear.Data(i)==165
MEAStest.tcd_n_currentGear(i)=165;
elseif MEAStest.tcd_enum_currentGear.Data(i)==166
MEAStest.tcd_n_currentGear(i)=16;
else
MEAStest.tcd_n_currentGear(i)=20;
end
i=i+1;
end

採用された回答

Guillaume
Guillaume 2023 年 10 月 5 日
編集済み: Guillaume 2023 年 10 月 5 日
Hi,
Matlab is one-based indexing. You should change your first line into:
i = 1;
And you should also change your while condition into:
while i<=length(MEAStest.tcd_enum_currentGear.Data)
Because size returns a vector with at least two elements.
You should also consider using a for loop.

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

製品


リリース

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by