I make mistakes while creating a matrix

1 次查看(过去 30 天)
DNdog =[2;2;2;3;3;3;5;5]
BNdog =[3;5;6;2;5;6;2;3]
blnmynokta =[2;5;6]
aik0 =[0.289528073170415
0.330368386539138
0.339433756993357
0.289527607389207
0.407152568064959
0.424260572052654
0.330366215572373
0.407154361068522]
bik0 =[-0.289528073170415
-0.330368386539138
-0.339433756993357
-0.289527607389207
-0.407152568064959
-0.424260572052654
-0.330366215572373
-0.407154361068522]
for i = 1:length(DNdog)
for j = 1:(length(blnmynokta))
if DNdog(i) == blnmynokta(j)
Adog1(i,2*j-1:2*j) = [aik0_dog(i,1) bik0_dog(i,1)]
elseif BNdog(i) == blnmynokta(j)
Adog1(i,2*j-1:2*j) = [-aik0_dog(i,1) -bik0_dog(i,1)]
else
Adog1(i,2*j-1:2*j) = [0 0]
end
end
end
% This is the resulting matrix
Adog1=[0.289528073170415 -0.289528073170415 0 0 0 0
0.330368386539138 -0.330368386539138 -0.330368386539138 0.330368386539138 0 0
0.339433756993358 -0.339433756993358 0 0 -0.339433756993358 0.339433756993358
-0.289527607389207 0.289527607389207 0 0 0 0
0 0 -0.407152568064959 0.407152568064959 0 0
0 0 0 0 -0.424260572052654 0.424260572052654
-0.330366215572373 0.330366215572373 0.330366215572373 -0.330366215572373 0 0
0 0 0.407154361068522 -0.407154361068522 0 0]
% This is the matrix I have to find. But I could not.
ADOG=[0.289528073170415 0 0
0.330368386539138 -0.330368386539138 0
0.339433756993358 0 -0.339433756993358
-0.289527607389207 0 0
0 -0.407152568064959 0
0 0 -0.424260572052654
-0.330366215572373 0.330366215572373 0
0 0.407154361068522 0]
  9 个评论
Geoff Hayes
Geoff Hayes 2017-4-8
Muhendisleksi - what are aik0_dog and bik0_dog?
Muhendisleksi
Muhendisleksi 2017-4-8
I typed wrong. It should be "aik0" and "aik0"

请先登录,再进行评论。

采纳的回答

Geoff Hayes
Geoff Hayes 2017-4-8
Muhendisleksi - I think that you can simplify your code to populate Adog1 to be the following
Adog1 = zeros(length(DNdog),length(blnmynokta)); % pre-size Adog1
for i = 1:length(DNdog)
for j = 1:(length(blnmynokta))
if DNdog(i) == blnmynokta(j) % if the coefficient matches then put in Adog1
Adog1(i,j) = aik0(i);
end
if BNdog(i) == blnmynokta(j) % do the same comparison for BNdog
Adog1(i,j) = bik0(i);
end
end
end
Try the above and see what happens!

更多回答(1 个)

Andrei Bobrov
Andrei Bobrov 2017-4-8
Adog1 = sum((reshape([DNdog,BNdog],[],1,2) == blnmynokta(:)').*cat(3,1,-1).*aik0,3);

类别

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

Community Treasure Hunt

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

Start Hunting!

Translated by