Borrar filtros
Borrar filtros

Implementing an equation in Matlab

1 visualización (últimos 30 días)
Saugata Bose
Saugata Bose el 27 de Jun. de 2019
Comentada: darova el 28 de Jun. de 2019
Hi,
I am trying to implement an equation in a form like, if a*b<1 then, x=-b/N otherwise x=0, where N= size of a. The equation is simple, but the data I recieve for a and b are differnt formet. a is a 4-d numeric array and b is a categorical array. Would you please suggest me how could I implement this equation?
Sample Input
a= val(:,:,1,1)=0.55
val(:,:,2,1)=0.45
val(:,:,1,2)=0.67
val(:,:,2,2)=0.33
b=
0
1
I have tried to solve it my way like following:
[m,n,o,p]=size(a,4);
x=zeros(m,n,o,p);
c=double(string(categorical(b)));
for i=1:p
for j=1:o
mul=c(i)*a(:,:,j,i);
if(mul<1)
x(:,:,j,i)=-c(i)/p;
else
x(:,:,j,i)=0;
end
end
end
Is it the right way to solve the equation?
  5 comentarios
Saugata Bose
Saugata Bose el 28 de Jun. de 2019
@darova: As the equation is like if the result of a*b is less than 1 then the value of X would be -b/N.
Inb my problem a must be a 4-d numeric array of shape (1 x 1 x i x j), where i is the category, and j is the observation ID and b must be taken as a categorical vector.
a= val(:,:,1,1)=0.67 (it means, the probability of the first observation stays in category 1 is 0.67)
val(:,:,2,1)=0.33( it means, the probability of the first observation stays in category 2 is 0.33)
However, c(1) refers the calue of first category, in my case, it is 0 where as c(2) refers the value of second category which is 1 here.
darova
darova el 28 de Jun. de 2019
If mul is a variable (1x1) your above code is OK.
mul=c(i)*a(:,:,j,i);
Also you don't have to use else statement because x matrix is already zeros

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre Data Distribution Plots en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by