Compare elements in a matrix for a variable
1 回表示 (過去 30 日間)
古いコメントを表示
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 件のコメント
回答 (1 件)
Rik
2020 年 6 月 25 日
編集済み: Rik
2020 年 6 月 25 日
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')
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!