MATLAB 是否真正支持一维数组?

eri*_*eld 3 arrays matlab multidimensional-array

如果我不必担心意外的 2d 操作,它真的会帮助我推理我的 MATLAB 代码。例如,如果我想对一维数组进行逐元素乘法,但一个是一行,另一个是一列,我最终会得到一个二维结果。

>> a = 1:8;
>> a = a(:);
>> a .* cumsum(ones(8))

ans =

     1     1     1     1     1     1     1     1
     4     4     4     4     4     4     4     4
     9     9     9     9     9     9     9     9
    16    16    16    16    16    16    16    16
    25    25    25    25    25    25    25    25
    36    36    36    36    36    36    36    36
    49    49    49    49    49    49    49    49
    64    64    64    64    64    64    64    64
Run Code Online (Sandbox Code Playgroud)

我想通过尽可能地将所有数组保持为 1d 来防止这种类型的事情,以及我无法预见的其他问题。但是每次我检查size()向量时,我都会得到至少 2 个元素:

>> size(1:1:6)

ans =

     1     6

>> size(linspace(0, 5, 10))

ans =

     1    10
Run Code Online (Sandbox Code Playgroud)

我已经尝试过如何在 matlab 中创建一维数组的建议这里的一些选项(PDF下载),我不能得到一个“真正的”一维数组。您将如何处理此类问题?

Sar*_*ama 6

没有一维数组这样的东西。该文件说,(重点煤矿):

所有 MATLAB 变量都是多维数组,无论是什么类型的数据。甲矩阵是通常用于线性代数的二维数组。

您可以使用isvector,isrowiscolumn分别标识向量、行向量和列向量。