そう多くORIENTは行列であることを、あなたのようなIさんとJさん、保存するために細胞を使用することができthis.Assumingを行う方法:
ORIENT=round(180.*(2.*rand(100,100)-1)); %or whatever
find_results=cell(361,2);
a=-180:1:180;
for index=1:length(a)
[i,j]=find(ORIENT==a(index));
find_results{index,1}=i;
find_results{index,2}=j;
end
非常にエレガントなまたは効率的ではないが、それは動作します私のために良い。私は行列を使いたいと思っていますが、行列の各列の長さを自由に選ぶことはできません。 Otherwhiseあなたは
find_results(index,1:length(i))=i;
のように行くことができます。しかし仕事に、このための唯一の方法は、必ずサイズ(find_result、1)要素の=数を作ることですので、あなたは、最初にゼロで埋めてしまいますマトリックスを作成する必要がありますマトリックス(セルは気にしません)。あなたは疎な行列を使うことができますが、人は手を抜いてしまいます。
--------------------------編集------------------- --------------------
私はあなたが行列のために、このような何かを行うことができると思いますが、サイズが巨大になります:
ORIENT=round(180.*(2.*rand(100,100)-1)); %or whatever
a=-180:1:180;
find_results_i=nan(size(ORIENT,1).*size(ORIENT,2),size(a,2));
find_results_j=nan(size(ORIENT,1).*size(ORIENT,2),size(a,2));
for index=1:length(a)
[i,j]=find(ORIENT==a(index));
find_results_i(1:length(j),index)=i;
find_results_j(1:length(j),index)=j;
end
の場合あなたは、スパースに精通している、それが遅くなりますaltougth、メモリのトンを保存するには
find_results_i=sparse(size(ORIENT,1).*size(ORIENT,2),size(a,2));
find_results_j=sparse(size(ORIENT,1).*size(ORIENT,2),size(a,2));
を使用
デモ入力データセットと期待される出力を投稿してください。 –