Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

could anyone help me how to overcome the following error

2 Ansichten (letzte 30 Tage)
Prabha Kumaresan
Prabha Kumaresan am 7 Jan. 2018
Geschlossen: MATLAB Answer Bot am 20 Aug. 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.

Antworten (1)

Walter Roberson
Walter Roberson am 7 Jan. 2018
Bearbeitet: Walter Roberson am 7 Jan. 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.

Diese Frage ist geschlossen.

Community Treasure Hunt

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

Start Hunting!

Translated by