Compare elements in a matrix for a variable
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi
I want to compare the elements in a 3D matrix (10x6x31) to a varaible I have. If they match I would like to update the matrix and output a different value in that element corresponding to a different variable.
The two varaibles are related, where the first is the id (75x1) and the r value (75x1) corresponds to this.
This is what I have attempted but it doesnt seem to wrok.
id= material_data{1,1};
r= material_data{1,2};
j = numel(M_3D);
for i = 1:j
if M_3D(i)==id(:)
M_3D(i)=r;
end
end
0 commentaires
Réponses (1)
Rik
le 25 Juin 2020
Modifié(e) : Rik
le 25 Juin 2020
So essentially a lookup table?
%generate some random data
id= rand(75,1);
r= rand(75,1);
id_list=unique(id);
M_3D=id_list(randi([1 numel(id_list)],10,6,31));
%using the a variable is optional
[a,index_in_id]=ismember(M_3D,id);
if ~all(a(:))
error('missing indices')
end
replaced=r(index_in_id);
%confirm with loop
replaced2=M_3D;
for n=1:numel(replaced2)
ind= id==replaced2(n);
replaced2(n)=r(ind);
end
clc,assert(isequal(replaced,replaced2),'lookup failed')
Voir également
Catégories
En savoir plus sur Logical 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!