我有这个矩阵
mp=
2
5
8
fp=
0.67 0.34 0
0.34 0.34 0.34
0 0.5 0.5
和这个矩阵
t=
1
1
1
2
3
2
3
遵守这条规则:
所以输出应该是这样的:
output=
3
3
3
5
6,5
5
6,5
我正在尝试使用此代码 但输出== t
[o p]=size(t)
[q r]=size(mp)
for i=1:o;
j=1:q;
if t(i)==j
output=mp*fp(j,:)
else
output=t(i)
end
end
答案 0 :(得分:0)
由于您的 t 值已经是行号,因此您可以直接使用 t 值进行乘法运算。
mp=[2
5
8] ;
fp=[0.67 0.34 0
0.34 0.34 0.34
0 0.5 0.5] ;
t=[1
1
1
2
3
2
3] ;
iwant = cell(size(t)) ; % initilaize the required data
for i = 1:length(t) % loop for each value of _t_
iwant{i} = mp*fp(t(i),:) ;
end
答案 1 :(得分:0)
一线解决方案
您可以使用以下语法:
output = sum(repmat(mp,1,length(t))'.*fp(t,:),2)
<强>结果强>
ans =
3.0400
3.0400
3.0400
5.1000
6.5000
5.1000
6.5000
示例强>
%variables declaration
fp= [0.67 0.34 0; 0.34 0.34 0.34;0 0.5 0.5];
mp = [2; 5; 8]
t = [1,1,1,2,3,2,3]
%calculates result
output = sum(repmat(mp,1,length(t))'.*fp(t,:),2)