Octave 如何在矩阵中分配变量?

Octave 如何在矩阵中分配变量?,octave,Octave,由于某种原因,我无法生成包含变量的矩阵。我收到以下信息 >>> A= [a b ;(-1-a) (1-b); (1+a) b] error: horizontal dimensions mismatch (2x3 vs 1x1) 为什么?如果我错了,请告诉我正确的方法 在Matlab中,首先需要分配一个变量,然后才能使用它 a = 1; b = a+1; 这样就会产生一个错误 clear; b = a+1; % ERROR! Undefined function or v

由于某种原因,我无法生成包含变量的矩阵。我收到以下信息

>>> A= [a b ;(-1-a) (1-b); (1+a) b]

error: horizontal dimensions mismatch (2x3 vs 1x1)

为什么?如果我错了,请告诉我正确的方法

在Matlab中,首先需要分配一个变量,然后才能使用它

a = 1;
b = a+1;
这样就会产生一个错误

clear;
b = a+1; % ERROR! Undefined function or variable 'a
Matlab从不接受未分配的变量。这是因为,在最低级别上,您没有
a
。您将有一个机器代码,该代码的值为
a
。这是由Matlab中的JIT编译器处理的,因此您不必担心这一点

如果您想使用数学中的变量,您可以专门将其表示为matlab。该对象称为
sym
,将
sym
x定义为变量
x
的语法为

syms x;
也就是说,你可以将向量或矩阵定义为

syms a b x y; % Assign the syms
A = [x y]; % Vector
B = A= [a b ;(-1-a) (1-b); (1+a) b]; % Matrix.
矩阵的大小可以通过
size(M)
或dim n
size(M,n)
找到。您可以计算矩阵积M3=M1*M2当且仅当M1具有大小m*nM2具有大小n*pM3的大小将为m*p。这也意味着只有当矩阵为正方形时,才允许操作A^N=A*A*..。这可以在matlab中通过比较进行验证

syms a b
A = [a,1;56,b]
if size(A,1) == size(A,2)
    disp(['A is a square matrix of size ', num2str(size(A,1)]);
else
    disp('A is not square');
end

这些是在Matlab中分配变量以及矩阵乘法的基本规则。此外,谷歌搜索错误错误:“x”未定义只会给我八度点击。你在用八度音阶吗?在这种情况下,我不能保证您可以使用
sym
对象,或者语法是正确的。

代码中a和b是如何定义的?如果我输入
syms a b
,然后粘贴到您的命令中,它就可以正常工作了。@homegrowntomo哦,是的,谢谢。也许这就是我收到错误的原因。我没有给他们下定义。我只是想用a,b做一些矩阵计算,这样我就有了它们的解。但是如果我想这样做,例如,如果我想用A和b来解A^2。我该怎么做呢。谢谢。如果a和b是标量,那么矩阵是矩形的,所以a^2没有定义。如果定义了它,您只需给出命令
A^2
即可进行计算。@homegrowntomoto好吧,我之前只是将A定义为矩阵,但不是为此定义的。假设A=[xy],这是一个1*2矩阵。现在,当您在matlab中键入此命令时,将出现错误>>>A=[x y]错误:“x”未定义在第1行第4列附近。我需要把它修好。这个八度是多少?在这种情况下,你应该添加一个八度标记是的,我使用八度。你怎么知道的?@lochana我在谷歌上搜索了错误信息。我从来没有使用过八度音阶,也没有从Matlab中发现错误。但是,如果我的回答不起作用,您应该在问题中添加一个倍频程标记,并添加一条评论,说明这对倍频程不起作用。@patrik这对倍频程很有效。问题是用户如何定义
a
b
(我猜它们不是标量。@carandraug这也是我的假设,因此是答案的矩阵部分。但是,由于我没有从lochana得到任何回应,因此很难给出进一步的建议。