请问以下问题可以用矩阵求和实现吗?。

问题描述
已知X=[0 0 1 1 3;0 0 0 1 2;0 0 1 2 1;0 0 1 2 3];
q=[0.2 0.1 0.2 0.3 0.1];
要求输出Q(4行5列矩阵)
Q=[0.3 0.1 0.5 0.3 0.1;0.5 0.3 0.2 0.3 0.1;0.3 0.1 0.3 0.1 0.3;0.3 0.1 0.2 0.3 0.1];
以下为Q具体求解过程:
Q(1,:)求解过程
q10=[0.3 0.1] %X第一行'0'的下标为1 2,则q10=[q2+q1 q2],算法类似sumcum(q(1:2)),只是本例从右往左累加,如某元素下标为1 2 3,则q=[q3+q2+q1 q3+q2 q3];以此类推
q11=[0.5 0.3] %X第一行'1'的下标为3 4,q11=[q3+q4 q4]
q12=[0] %X第一行没有'2',故为[0]
q13=[0.1] %X第一行'3'的下标为 5,q13=[q5]
注:从0到3依次计算,使其成为新的矩阵Q(1,:)=[0.3 0.1 0.5 0.3 0.1],[0]不统计
Q(2,:)求解过程
q20=[0.5 0.3 0.2] %X第二行'0'的下标为1 2 3,q20=[q3+q2+q1 q3+q2 q3];
q21=[0.3] %X第二行'1'的下标为 4,q21=[q4];
q22=[0.1] %X第二行'2'的下标为5,q22=[q5];
q23=[0] %X第二行没有'3',故为[0]
Q(2,:)=[0.5 0.3 0.2 0.3 0.1];
Q(3,:)求解过程
q30=[0.3 0.1] %X第三行'0'的下标为1 2,q30=[q2+q1 q2]
q31=[0.3 0.1] %X第三行'1'的下标为3 5,q31=[q5+q3 q5];
q32=[0.3] %X第三行'2'的下标为4,q32=[q4];
q33=[0] %X第三行没有元素'3',故为0
Q(3,:)=[0.3 0.1 0.3 0.1 0.3];
Q(4,:)求解过程
q40=[0.3 0.1] %X第四行'0'的下标为1 2,q40=[q2+q1 q2]
q41=[0.2] %X第四行'1'的下标为3,q41=[q3 ];
q42=[0.3] %X第四行'2'的下标为4,q42=[q4];
q43=[0.1] %X第四行'3'的下标为5,q43=[q5];
Q(4,:)=[0.3 0.1 0.2 0.3 0.1];
Q=[Q(1,:);Q(2,:);Q(3,:);Q(4,:)];

 Accepted Answer

X = [0 0 1 1 3;0 0 0 1 2;0 0 1 2 1;0 0 1 2 3];
q = [0.2 0.1 0.2 0.3 0.1];
for jj = 1:1:size(X,1)
    temp = arrayfun(@(ii) fliplr( cumsum(q( fliplr(find( X(jj,:)==ii )) )) ), [0:1:3], 'UniformOutput', false);
    Q(jj,:) = horzcat(temp{:});
end
disp( Q )

More Answers (0)

Categories

Find more on 类自检和元数据 in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!