0

私はMatlabの初心者です。4 つの異なるベクトルがあり、次のように追加する必要があります。

mod1+lan1= x1 mod2+lan2= x2

しかし、コードでわかるように、数値は異なります。

mod1= [413 443 467 487  531 547 648 666 677 747 859 867 905 936 1388 1631 2121];
mod2= [mout8_c mout9_c mout3_c mout10_c mout11_c mout12_c mout1_c mout13_c mout14_c mout15_c mout2_c mout16_c mout17_c mout18_c mout26_c mout6_c mout7_c]

lan1= [485 560 660 815 1650 2215];
lan2=[out1_c out2_c out3_c out4_c out5_c out7_c]

したがって、x1 に対して行ったことは次のとおりです。

x=[mod1 lan1];
x1= sort(x);

しかし、問題はyにあります。位置が同じである必要があるためです(たとえば、位置413 = mout8_cのように)が、数字はまったく異なります。

要約すると(このグラフを見た方が良いかもしれません)。そのポイントがあり、それぞれの順序で追加する必要があります。 http://img88.imageshack.us/img88/4604/16620372.jpg

よろしくお願いします。

エマ

4

2 に答える 2

0

最後に、私はそのコードを使用しました:

mod1= [413 443 467 487  531 547 648 666 677 747 859 867 905 936 1388 1631 2121]';
lan1= [485 560 660 815 1650 2215]';
mod2 = { 'mout8_c'    'mout9_c'    'mout3_c'    'mout10_c'    'mout11_c'    'mout12_c' 'mout1_c'    'mout13_c'    'mout14_c'    'mout15_c' 'mout2_c'    'mout16_c'    'mout17_c'    'mout18_c'    'mout26_c'    'mout6_c'    'mout7_c'}';
lan2 = {'out1_c'    'out2_c'    'out3_c'    'out4_c'    'out5_c'    'out7_c'}';
[x1,i1] = sort([mod1;lan1]);
y = [mod2;lan2];
out = y(i1);

みなさん、どうもありがとうございました!

于 2012-09-13T07:53:19.213 に答える
0

これらのベクトルを追加するのではなく、それらを連結します。異なるサイズのベクトルを追加することはできません。

x で並べ替えを使用すると、順列ベクトルを取得できます。個別にソートするのではなく、取得して y で使用する

temp = [mod1 lan1];
[x1, perm] = sort(temp);
temp = [mod2 lan2];
x2 = temp(perm);

y の代わりに x2 を使用しました。これは、質問の冒頭で使用したものです。

于 2012-09-12T13:35:22.533 に答える