1

他のすべての言語で、行列がある場合、一次元インデックスを呼び出すと、結果は配列になります。Matlabで行列の単一のインデックスを取得すると、単一のインデックスが取得される理由はわかりません。要素、それは愚かです。
とにかくCで:

mat[4][4];

mat[0]は配列です。

Matlabの場合:

mat=[1 2; 3 4];

マトリックスの最初の行を取得するにはどうすればよいですか?mat(1)は1であり、[12]ではありません。

編集:別の問題があります、私はこの関数に問題があります:

function str= split(string, del)

index=1;
found=0;

str=['' ; ''];

for i=1:length(string)
    if string(i)==del
        found=1;
        index=1;
    elseif found==1
        str(2,index)=string(i);
        index=index+1;
    else
        str(1,index)=string(i);
        index=index+1;
    end
end

end

これにより、行列が返されることもあれば、配列が返されることもあります。
たとえば、split('FF'、'。')を使用すると、結果として' FF'が得られますが、行列を返したい場合はどうなりますか?行列の次元を選択することすらできません。このコンテキストでは、弱い型の言語は大きな欠点です。

4

3 に答える 3

9

必要な列を指定する必要があります。:ディメンション内のすべてのインデックスを表すため、最初の行を取得します

mat(1,:)

それは愚かではありませんが、便利です。インデックスが1つしかない行列をアドレス指定すると、暗黙的にベクトルに変換されます。これにより、線形インデックスを使用するオプションが提供されます(sub2indを参照)。

于 2012-09-30T17:08:25.080 に答える
5

これにより、2番目の行が抽出されます

vector = mat(2,:)

そしてこれは2番目の列を抽出します

vector = mat(:,2) 

使用できます

vector = mat(end,:)

最後の行を抽出するには

これがお役に立てば幸いです

于 2012-09-30T17:13:27.017 に答える
2

MATLABのMatrixIndexingから:

1つの添え字のみを使用して行列Aにインデックスを付けると、MATLABは、列を連続して下に移動することにより、Aをその要素が長い列ベクトルに引き伸ばされたかのように扱います。

私はそれがもうあなたに愚かに見えないことを願っています(そして、先輩とマーワンからの正しい答えと一緒に)

于 2012-09-30T17:25:10.623 に答える