Assign a label to a point of a matrix in if statement

3 次查看(过去 30 天)
Hi, I'm trying to assign a label (based on a category from a table) to each element of a 10*10 matrix in an if statement such that if the value is smaller or larger from a threshold, the corrosponding element gets assigned a certain category label with the index of the element so that it can be known which element it is . For example:
Kappa=rand(10,10);
KappaLong=rand(10,10);
KappaShort=rand(10,10);
for i=1:10
for j=1:10
if ((abs(Kappa(i,j)))/(abs(KappaLong(i,j)))<1) && ((abs(Kappa(i,j)))/(abs(KappaShort(i,j)))<1)
Kappa(i,j)='Point is stable: Category 1 is assigned' %to show which element of the matrix is stable
elseif ((abs(Kappa(i,j)))/(abs(KappaLong(i,j)))>1) && ((abs(Kappa(i,j)))/(abs(KappaShort(i,j)))>1)
Kappa(i,j)='Point is unstable'
% (the code should continue after the elseif)
if abs(Kappalong)>abs(KappaShort)
ModKappa=abs(KappaLong)
else ModKappa=abs(KappaShort)
end
end
end
end
I know the code above is not complete or correct, just wanted to provide an example about what I mean. Thank you in advance.
  3 个评论
MarshallSc
MarshallSc 2021-6-1
Thanks for your reply Bob. Well, when I want to execute the code, I'll receive the following error in the line Kappa_j(i,j)='Point is stable: Category 1 is assigned' :
Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 1-by-39.
I was wondering whether I'm writing this part incorrectly.
Stephen23
Stephen23 2021-6-2
编辑:Stephen23 2021-6-2
Note that storing lots of scalar numeric data in a cell array makes processing that data much slower and more complex. You should probably store the "status" string in a separate string array, and keep the numeric data in a numeric array.

请先登录,再进行评论。

采纳的回答

the cyclist
the cyclist 2021-6-1
By default, Kappa_j is going to be a numeric array, and there cannot accept character input. Instead, you could define it as a cell array:
Kappa_j = cell(2,2); % Preallocate the cell array, but smaller to illustrate
Kappa_j{1,1} = 'Point is stable: Category 1 is assigned'
Kappa_j = 2×2 cell array
{'Point is stable: Category 1 is assigned'} {0×0 double} {0×0 double } {0×0 double}
Notice the use of curly brackets to access the "inside" of the cell.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by