Iterating through a dataset and creating a vector with according values
1 次查看(过去 30 天)
显示 更早的评论
So I have a 10 000 X 1 vector (let's call it vector A) of different values ranging from -1 to 1. I want to create another 10 000 X 1 vector (let's call it vector B) that has values corresponding to the ones in the first vector. I want to create a loop that does this:
Everytime a value in vector A is bigger than 0.5, add the value 3 to vector B with the same corresponding position.
Everytime a value in vector A is smaller than -0.5, add the value 1 to vector B with the same corresponding position.
Everytime a value in vector A is between -0.5 and 0.5, add the value 2 to vector B with the same corresponding.
In that case, the resulting matrix should look like this:
[A] [B]
-0.9 1
-0.3 2
0.6 3
-0.2 2
-0.7 1
I know I need to use a loop but I struggle with this. Thank you so much for your help.
2 个评论
Dyuman Joshi
2022-9-20
What about border values i.e. 0.5 and -0.5, where value will you assign to corresponding B elements?
回答(1 个)
dpb
2022-9-20
Rarely need loops for such things as this with MATLAB; either logical addressing or table lookup almost always comes to the rescue -- the latter (using the builtin interpolation routine) solution here would be
A=[-0.9;-0.3;0.6;-0.2;-0.7];
B=interp1([-1,-0.5,0.5,1],[1,2,3,3],A,'previous')
Alternatively, another lookup solution, with less overhead...
B=discretize(A,[-1,-0.5,0.5,1])
4 个评论
Dyuman Joshi
2022-9-20
After you get the values, you can get the values as such
str={'GT';'IN';'ST'};
A=[-0.9;-0.3;0.6;-0.2;-0.5;0.5];
B=interp1([-1,-0.5,0.5,1],[1,2,3,3],A,'previous');
%cell array
C=str(B)
%char array
D=cell2mat(C)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Characters and Strings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!