2

私はmatlabを始めたばかりで、どこかで立ち往生しています...例を考えてみましょう

X=(3:7)
Z=(2:6)
for (i=1:5)
    y=abs(X(i)-Z);

    dm=min(y);

    D=find(y==min(y))
    D1=Z(D);

end

D と D1 を列/行ベクトルにしたいのですが、助けてください。

4

4 に答える 4

1

使用する:

if isrow(D)
    D = D.'; % .' is the transpose operator
end

ところで: 括弧を頻繁に使用する必要はありません。

于 2013-09-05T08:12:34.247 に答える
1

以下も参考になると思います。

% convert ANY array into a column vector
D = D(:);

% convert ANY array into a row vector
D1 = D1(:).';

このようにすると、パフォーマンスが低下することなく、一方が列で他方が行であることが保証されます。

于 2013-09-05T08:28:41.237 に答える
1

行ベクトルから列ベクトルに単純に変換する場合は、コードの最後に次の行を追加するだけDです。D1

D = D';
D1 = D1';

この'操作は、問題の行列の転置を与えるだけです。

于 2013-09-05T08:11:02.683 に答える
1

現在、スカラー値をDとに格納していD1ます。D値を と の i 番目の列に保存したかったのではないでしょうD1か。

X=(3:7)
Z=(2:6)
for (i=1:5)
    y=abs(X(i)-Z);
    dm=min(y);
    D(i)=find(y==min(y));
    D1(i)=Z(D(i));
end
于 2013-09-05T08:14:47.490 に答える