Effacer les filtres
Effacer les filtres

[Beginner] MATLAB : Error ??? Index exceeds matrix dimensions but I can't fix it

1 vue (au cours des 30 derniers jours)
Yassine Bouchdoug
Yassine Bouchdoug le 4 Déc 2015
Hi all, I'm just a beginner in Matlab and I need help about an issue in my program. When I try to run my program, I have one of the following error : ??? Index exceeds matrix dimensions in those lines :
Error in ==> reseau_capteur_def at 70 mesg_decod(3,:)=xor(xor(zb_gt(7,:),zb_gt(2,:)),zb_gt(4,:));
Error in ==> reseau_capteur_def at 74 mesg_decod(4,:)=xor(xor(zb_gt(7,:),zb_gt(2,:)),zb_gt(3,:));
Error in ==> reseau_capteur_def at 65 mesg_decod(2,:)=xor(xor(zb_gt(7,:),zb_gt(3,:)),zb_gt(4,:));
Can you help me to solve this please? Because I'm still a beginner in Matlab and I spent a whole week trying to solve this but with no success, and thank you in advance for your help.
Here's a part of the program where the error occurs (and the whole program if attached to this message):
% on réencode en utilisant le codage
y_trans(1,:)=xor(zdec_rel(1,:),zdec_rel(2,:));
y_trans(2,:)=xor(xor(zdec_rel(1,:),zdec_rel(3,:)),zdec_rel(4,:));
y_trans=2*y_trans-1;
%signal reçu à la gateway depuis le relais
for ii=1:2
z_gt(ii,:)=awgncomplex(1,length_msg,SNR(1,m),HH_rel_gt*y_trans(ii,:));
end
% On égalise les signaux au niveau de la gateway
for ii=1:N_capteurs
zz_gt(ii,:)=conj(HH_sens_gt(1,ii))*y_gt(ii,:)/(abs(HH_sens_gt(1,ii)))^2;
end
for ii=1:2
za_gt(ii,:)=conj(HH_rel_gt)*z_gt(ii,:)/(abs(HH_rel_gt))^2;
end
zb_gt=[0.5*(sign(real(zz_gt))+1);0.5*(sign(real(za_gt))+1)];
zb_gt(out_pk(1,1),:)=zeros(1,length_msg);
zb_gt(out_pk(1,2),:)=zeros(1,length_msg);
%zb_gt
% L'algorithme de décodage commence ici, on distingue les différents cas
if ((out_pk(1,1)==1) & (out_pk(1,2)==2))
mesg_decod(1,:)=xor(xor(zb_gt(6,:),zb_gt(3,:)),zb_gt(4,:));
mesg_decod(2,:)=xor(xor(zb_gt(7,:),zb_gt(3,:)),zb_gt(4,:));
mesg_decod(3,:)=zb_gt(3,:);
mesg_decod(4,:)=zb_gt(4,:);
elseif ((out_pk(1,1)==1) & (out_pk(1,2)==3))
mesg_decod(1,:)=xor(xor(zb_gt(5,:),zb_gt(2,:)),zb_gt(4,:));
mesg_decod(3,:)=xor(xor(zb_gt(7,:),zb_gt(2,:)),zb_gt(4,:));
mesg_decod(2,:)=zb_gt(2,:);
mesg_decod(4,:)=zb_gt(4,:);
elseif ((out_pk(1,1)==1) & (out_pk(1,2)==4))
mesg_decod(4,:)=xor(xor(zb_gt(7,:),zb_gt(2,:)),zb_gt(3,:));
mesg_decod(1,:)=xor(xor(zb_gt(5,:),zb_gt(2,:)),mesg_decod(4,:));
mesg_decod(2,:)=zb_gt(2,:);
mesg_decod(3,:)=zb_gt(3,:);
elseif ((out_pk(1,1)==2) & (out_pk(1,2)==3))
mesg_decod(2,:)=xor(xor(zb_gt(5,:),zb_gt(1,:)),zb_gt(4,:));
mesg_decod(3,:)=xor(xor(zb_gt(6,:),zb_gt(1,:)),zb_gt(4,:));
mesg_decod(1,:)=zb_gt(1,:);
mesg_decod(4,:)=zb_gt(4,:);
elseif ((out_pk(1,1)==2) & (out_pk(1,2)==4))
mesg_decod(4,:)=xor(xor(zb_gt(6,:),zb_gt(1,:)),zb_gt(3,:));
mesg_decod(2,:)=xor(xor(zb_gt(5,:),zb_gt(1,:)),mesg_decod(4,:));
mesg_decod(1,:)=zb_gt(1,:);
mesg_decod(3,:)=zb_gt(3,:);
else
mesg_decod(4,:)=xor(xor(zb_gt(5,:),zb_gt(1,:)),zb_gt(2,:));
mesg_decod(3,:)=xor(xor(zb_gt(6,:),zb_gt(1,:)),mesg_decod(4,:));
mesg_decod(1,:)=zb_gt(1,:);
mesg_decod(2,:)=zb_gt(2,:);
end

Réponses (1)

Thorsten
Thorsten le 4 Déc 2015
Modifié(e) : Thorsten le 4 Déc 2015
What does
size(zb_gt)
return before those lines? Presumably it has to few rows.
  1 commentaire
Yassine Bouchdoug
Yassine Bouchdoug le 4 Déc 2015
Hi and thank you for your answer,
When I try to do the size(zb_gt) it gives me (7 lines 200 columns) : ans =
7 200
You can find the whole program (with the instructions before those on the message) attached to the message, do not hesitate to look it up for a better understanding of it (and don't worry it's not a very long program :) ).

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by