Filter löschen
Filter löschen

Compare elements in a matrix for a variable

5 Ansichten (letzte 30 Tage)
R2
R2 am 25 Jun. 2020
Kommentiert: R2 am 26 Jun. 2020
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

Antworten (1)

Rik
Rik am 25 Jun. 2020
Bearbeitet: Rik am 25 Jun. 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 Kommentar
R2
R2 am 26 Jun. 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.

Melden Sie sich an, um zu kommentieren.

Produkte


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by