我正在尝试实现以下等式:
x = -b/N if a*b<1
x = 0 otherwise
其中N
是a
的大小。该公式很简单,但是我收到的a
和b
的数据采用不同的格式。 a
是4D数值数组(1x1x {K
x N
),而b
是分类数组(长度为K
的向量)。您能给我建议我如何实现这个方程式吗?
样本输入
% 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
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)
val(:,:,1,2)=0.55
val(:,:,2,2)=0.45
% b must be a categorical vector
b=
0(category 1)
1(category 2)
我面临的问题
计算上述方程式时,我面临的主要问题是如何操作4D数组和分类矢量。
我尝试通过以下方式解决该问题:
我的代码:
[m,n,o,p]=size(a);
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
求解方程式正确吗?