Info

La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.

could anyone help me how to overcome the following error

2 visualizaciones (últimos 30 días)
Prabha Kumaresan
Prabha Kumaresan el 7 de En. de 2018
Cerrada: MATLAB Answer Bot el 20 de Ag. de 2021
G=rand(50,100)
C=rand(50,100)
N_G=15;%No of group
R = cell(N_G,1)
sumR = cell(N_G,1)
for d=1:1:N_G
%------------------------------------------
% select No of UE randomly
%------------------------------------------
if d==N_G
sz=length(C(:,1))
e=sz
else
if d==1
e=randi([1 9])% select No of UE randomly
else
sz=length(C(:,1))
sz=ceil(sz/2)
e=randi([1 sz])% select No of UE randomly
end
end
%------------------------------------------
idx=randsample(1:size(C,1),e);
%------------------------------------------
% Getting arry G and C from random index
%------------------------------------------
for s=1:length(idx)
X(s,:) = C(idx(s),:)
Y(s,:) = G(idx(s),:)
Xi(s)=find(X(s,:))
end
X=[X(1:s,:)]
Y=[Y(1:s,:)]
%------------------------------------------
% Replacing
%------------------------------------------
non_0=sum(X)
non_0=repmat(non_0,s,1)
S=X
S(non_0 & X==0)=Y(non_0 & X==0);
Z{d}=S
%-----------------------------------------------------
% deleting the first output from the main array
%-----------------------------------------------------
G(idx,:) = []
C(idx,:) = []
end
W=[Z{1};Z{2};Z{3};Z{4};Z{5};Z{6};Z{7};Z{8};Z{9};Z{10};Z{11};Z{12};Z{13};Z{14};Z{15}]
If i run the following code i am getting Error (line 36) Xi(s)=find(X(s,:)) In an assignment A(I) = B, the number of elements in B and I must be the same.
Could anyone help me to solve the following issue.

Respuestas (1)

Walter Roberson
Walter Roberson el 7 de En. de 2018
Editada: Walter Roberson el 7 de En. de 2018
You have
for s=1:length(idx)
X(s,:) = C(idx(s),:)
Y(s,:) = G(idx(s),:)
Xi(s)=find(X(s,:))
end
C has been assigned a 50 x 100 array. s is a scalar. idx(s) is a scalar. So C(idx(s),:) is going to be exactly one row out of C, so X(s,:) is going to be 1 x 100.
Now at the start, C is all non-zero because rand() never generates 0. So X(s,:) is going to start out all non-zero, so find(X(s,:)) is going to return all 100 indices because they are all non-zero locations. You try to assign those 100 indices to Xi(s) but Xi(s) only has room for a scalar.
You never use Xi again, so there is no obvious reason why you are computing Xi.

La pregunta está cerrada.

Community Treasure Hunt

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

Start Hunting!

Translated by