1

在所有其他语言中,如果我有一个矩阵,如果我调用一维索引,结果将是一个数组。我不知道为什么在 Matlab 中,如果你取一个矩阵的单个索引,你会得到一个元素,这很愚蠢。
无论如何在C中:

mat[4][4];

mat[0] 是一个数组。

在 Matlab 中:

mat=[1 2; 3 4];

如何取矩阵的第一行?mat(1) 是 1,而不是 [1 2]。

编辑:还有另一个问题,我有这个功能的问题:

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,:)

这并不愚蠢,但很有用。如果您使用只有一个索引的矩阵寻址,它会隐式转换为向量。这使您可以选择使用线性索引(请参阅sub2ind)。

于 2012-09-30T17:08:25.080 回答
5

这将提取第二行

vector = mat(2,:)

这将提取第二列

vector = mat(:,2) 

您可以使用

vector = mat(end,:)

提取最后一行

希望这可以帮助你

于 2012-09-30T17:13:27.017 回答
2

MATLAB 中的矩阵索引

当您仅使用一个下标对矩阵 A 进行索引时,MATLAB 会将 A 视为其元素被串成一个长列向量,方法是连续向下排列

我只是希望它不再让你看起来很愚蠢(以及来自 angainor 和 Marwan 的正确答案)

于 2012-09-30T17:25:10.623 回答