6

私はMATLABに45x2のセルを持っており、最初の列は任意のサイズのdoubleの行列です。

これらのマトリックスのいくつかは繰り返されますが、他のマトリックスは繰り返されません。一意の行列のみを削除して(ただし、繰り返しの数を記録して)、2番目の列をそのままにしようとしています。

私はいくつかのことを試しましたが(表、履歴など)、セル構造のためにすべて失敗します(私は思います)。それらのそれぞれを個別にループすることを除いて、これをどのように行うのでしょうか?

4

1 に答える 1

11

行列を文字列に変換すると、それらに対して一意に実行できます。

%# create a sample cell array
mc = {magic(3);magic(4);magic(4);magic(5);magic(3);magic(4)}

%# convert to strings
mcs = cellfun(@(x)(mat2str(x)),mc,'uniformoutput',false);

%# run unique
[uniqueCells,idxOfUnique,idxYouWant] = unique(mcs);
于 2010-03-06T12:29:19.703 に答える