Compare elements in a matrix for a variable

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

Respuestas (1)

Rik
Rik el 25 de Jun. de 2020
Editada: Rik el 25 de Jun. de 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')

1 comentario

R2
R2 el 26 de Jun. de 2020
It seems this requires all of the ids to match, what if it were to look for any that do but if some dont thats ok.

Iniciar sesión para comentar.

Categorías

Más información sobre Creating and Concatenating Matrices en Centro de ayuda y File Exchange.

Productos

Versión

R2019b

Etiquetas

Preguntada:

R2
el 25 de Jun. de 2020

Comentada:

R2
el 26 de Jun. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by