さて、これは奇妙な質問のように思えるかもしれませんが、私に耐えてください。
そのため、.mファイルにランダムなベクトルがあり、特定の制約が組み込まれています。これが私のコードです:
randvecall = randsample(done, done, true);
randvec = randvecall([1;diff(randvecall(:))]~=0);
「完了」は、サンプルを取得する値の範囲にすぎないため、心配する必要はありません。ご覧のとおり、このrandsamplesは値の範囲からサンプリングし、diff関数を使用してこのランダムベクトルを削除し、連続する重複値を削除します。ベクトルに重複する値が存在する可能性はありますが、それらを連続させることはできません。
これはすべてうまく機能し、完全に正常に機能します。
したがって、たとえば、randvecは次のようになります。
randvec =
54
47
52
26
39
2
14
51
24
6
19
56
34
46
12
7
41
18
29
7
実際にはもっと長く、60〜70の値のようなものですが、要点はわかります。
私がやりたいのは、このベクトルに少し余分な制約を追加することです。このベクトルからサンプリングすると、値は範囲に従って分類されます。したがって、1〜15の値はカテゴリ1、16〜30はカテゴリ2、というように続きます。この理由は重要ではありませんが、プログラムのかなり重要な部分です。したがって、上記で提供した値を見ると、次のようなセクションが表示されます。
7
41
18
29
7
これは私のプログラムにとって実際には悪いことです。値の範囲は別々に扱われるため、41、18、および29は7とは異なる方法で使用されます。したがって、すべての意図と目的のために、7が私のスクリプトに連続して表示されています。私がやりたいのは、ベクトルが生成されたときに、ベクトルを解析/変更/何でもして、特定の範囲の同じ番号が、それらの間に異なる範囲の他の番号がいくつあるかに関係なく、「連続して」表示されないようにすることです。これは理にかなっていますか/私はこれをうまく説明しましたか?したがって、MATLABでベクトルを検索し、特定の範囲(1〜15、16〜30、31〜45、46〜60)内のすべての値について、同じ範囲の「連続する」値が同一でないことを確認します。
だから、それが私がやりたいことです。これは決してこれを行うための最良の方法ではないかもしれないので、アドバイス/代替案はもちろんありがたいです。複数のベクトルを使用するとこれをより適切に実行できることはわかっていますが、さまざまな理由から、これを単一の長いベクトルにする必要があります(スクリプトの設計方法では、値の範囲ごとに個別のベクトルがあると機能しません) 。