Define a matrix elementwise
Ältere Kommentare anzeigen
I would like to define the matrix Q based on the given matrix A and B (both very large). So can I define like this?
Q(i,j) = A(i,j);
if B(i,j)=0
0; elseif A(i,j)=0
else 1/abs(A(i,j));
end
12 Kommentare
James Tursa
am 30 Mär. 2016
Your code does not make sense. Can you fix it so that we can understand the algorithm you are trying to implement?
MatLab
am 31 Mär. 2016
dpb
am 31 Mär. 2016
Which is what the Answer provided does...
>> A=randn(4) % sample data
A =
0.9642 -0.7982 1.3514 -0.8479
0.5201 1.0187 -0.2248 -1.1201
-0.0200 -0.1332 -0.5890 2.5260
-0.0348 -0.7145 -0.2938 1.6555
>> B=ones(4);B(randperm(numel(A),round(0.2*numel(A))))=0 % hit-n-miss zeros in B
B =
1 0 1 1
1 1 1 0
1 0 1 1
1 1 1 1
>> Q=1./abs(A).*(B~=0); Q(isnan(Q))==0;
Q =
1.0371 0 0.7400 1.1793
1.9229 0.9817 4.4490 0
49.9305 0 1.6977 0.3959
28.7595 1.3995 3.4042 0.6040
>>
MatLab
am 31 Mär. 2016
MatLab
am 31 Mär. 2016
dpb
am 31 Mär. 2016
Makes no difference as long as A,B same size...and Q is size(A). Did you even try it?
MatLab
am 2 Apr. 2016
dpb
am 3 Apr. 2016
Sorry, don't understand the question...you have an A and B? If so, just type in what I did...Matlab allocates automatically on assignment, there's nothing needed a priori.
MatLab
am 3 Apr. 2016
Walter Roberson
am 3 Apr. 2016
Bearbeitet: Walter Roberson
am 3 Apr. 2016
function result = Q(A,B)
result = 1./abs(A).*(B~=0);
result(isnan(result))==0;
and store it in Q.m
dpb
am 3 Apr. 2016
Ah, sorry I didn't follow where the hangup was...note now that if you follow Walter's lead and name the function Q if you subsequently write
Q=Q(A,B);
that by Matlab parsing rules you will have aliased the definition of the function Q by a resulting array Q and won't be able to use the function again until clear Q or change context such that the array isn't in scope or the like.
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Matrices and Arrays finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!