How to resolve issue while dealing with larger matrices?

2 Ansichten (letzte 30 Tage)
Ammy
Ammy am 25 Mär. 2022
Kommentiert: Arif Hoq am 25 Mär. 2022
A=randi(16,[4,4]);
B=A(:)';
P=randi(16,[1 4]);
V=randi(16,[1 4]);
B(P)=V; % replace entries at position P with values in V
C=B(1,P)
C=V satisfied in this case
But I'm not getting the right answer in case of larger size matrices.
A=randi(255,[512,512]);
>> B=A(:)';
>> P=randi(255,[1 256]);
>> V=randi(256,[1 256]);
>> B(P)=V; %
>> C=B(1,P);
C should be equal to B , but I'm not getting it right,
Request for help regarding this.
  9 Kommentare
Ammy
Ammy am 25 Mär. 2022
@Arif Hoq Got the point why I'm facing the problem, thank you very much. How can I vote your answers?
Arif Hoq
Arif Hoq am 25 Mär. 2022
i am posting my previous response as an answer

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Voss
Voss am 25 Mär. 2022
As @Arif Hoq points out, the problem is not with the size of the matrices. The problem is that the elements of P are not guaranteed to be unique. Look at what happens when a number occurs more than once in P, in this case 8 appears twice in P:
A=randi(16,[4,4]);
B=A(:)'
B = 1×16
8 9 11 8 9 4 5 11 1 14 13 5 1 15 13 5
P=randi(16,[1 4])
P = 1×4
7 1 8 8
V=randi(16,[1 4])
V = 1×4
2 11 13 4
B(P)=V % replace entries at position P with values in V
B = 1×16
11 9 11 8 9 4 2 4 1 14 13 5 1 15 13 5
C=B(1,P)
C = 1×4
2 11 4 4
C==V
ans = 1×4 logical array
1 1 0 1
In this case, B(P)=V is B([7 1 8 8]) = [2 11 13 4]; which means that B(8) is assigned the value 13 and then immediately assigned the value 4, so that B(8) is 4 after that step.
Then C = B(1,P) is C = B(1,[7 1 8 8]) = [2 11 4 4] not [2 11 13 4] = V
Any time P has repeated values, then V will not be recoverable from B and P.

Arif Hoq
Arif Hoq am 25 Mär. 2022
A=randi(16,[4,4]);
B=A(:)';
P=randi(16,[1 4]);
V=randi(16,[1 4]);
[C out]=ismember(V,B);
if numel(out(out~=0)) ==4
disp(out)
else
disp('V is not the member of B')
end

Kategorien

Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by