Arrays Matlab中的矢量化,无法理解的语法差异导致失败
我不明白为什么在下面的示例中,只有x1变成1000列数组,而y是一个数字Arrays Matlab中的矢量化,无法理解的语法差异导致失败,arrays,matlab,vectorization,Arrays,Matlab,Vectorization,我不明白为什么在下面的示例中,只有x1变成1000列数组,而y是一个数字 x = [0:1:999]; y = (7.5*(x))/(18000+(x)); x1 = exp(-((x)*8)/333); 如有任何澄清,将不胜感激 尝试显式指定要执行元素操作而不是矩阵操作: y = (7.5.*(x))./(18000+(x)); 通常,*进行元素乘法,/进行元素除法等。因此,[12].[34]产生[38]。省略这些点将导致Matlab在能够合理解释输入为矩阵时使用矩阵运算。尝试明确指定要执
x = [0:1:999];
y = (7.5*(x))/(18000+(x));
x1 = exp(-((x)*8)/333);
如有任何澄清,将不胜感激 尝试显式指定要执行元素操作而不是矩阵操作:
y = (7.5.*(x))./(18000+(x));
通常,
*
进行元素乘法,/
进行元素除法等。因此,[12].[34]
产生[38]
。省略这些点将导致Matlab在能够合理解释输入为矩阵时使用矩阵运算。尝试明确指定要执行元素操作而不是矩阵运算:
y = (7.5.*(x))./(18000+(x));
通常,
*
进行元素乘法,/
进行元素除法等。因此,[12].[34]
产生[38]
。省略这些点将导致Matlab在能够合理解释输入为矩阵时使用矩阵运算。为什么x1
1x1000
?
如合同中所述
exp(X)
返回数组中每个元素的指数eˣ
由于x
是1x1000
,因此-(x*8)/333
是1x1000
,当对其应用exp()
时,计算所有1000个元素的指数,因此x1
也是1x1000
。例如,exp([1 2 3])
与[exp(1)exp(2)exp(3)]
相同
为什么
y
是一个数字?
如合同中所述
如果A
是矩形m
-by-n
矩阵,且B
是矩阵
使用n
列,然后x=B/A
返回
方程组x*A=B
就你而言,
A
是18000+x
和size(18000+x)
是1x1000
即m=1
和n=1000
,以及m~=n
而
B
是7.5*x
,它有n=1000
列。
⇒
(7.5*x)/(18000+x)
将返回方程的最小二乘解x*(18000+x)=7.5*x
最后的评论:
x=[0:1:999]代码>
这里不需要括号,最好这样使用:x=0:1:999代码>
x1
进行元素级除法,应使用如下运算符:
y=(7.5*x)./(18000+x); %Also removed unnecessary brackets
还要注意,加法总是按元素进行的
+
不是有效的MATLAB语法(但它在八度音阶下工作)。请参阅MATLAB中的有效算术数组和矩阵运算符
3.
x1也有一些不必要的括号。为什么x1
1x1000
?
如合同中所述
exp(X)
返回数组中每个元素的指数eˣ
由于x
是1x1000
,因此-(x*8)/333
是1x1000
,当对其应用exp()
时,计算所有1000个元素的指数,因此x1
也是1x1000
。例如,exp([1 2 3])
与[exp(1)exp(2)exp(3)]
相同
为什么y
是一个数字?
如合同中所述
如果A
是矩形m
-by-n
矩阵,且B
是矩阵
使用n
列,然后x=B/A
返回
方程组x*A=B
就你而言,
A
是18000+x
和size(18000+x)
是1x1000
即m=1
和n=1000
,以及m~=n
而B
是7.5*x
,它有n=1000
列。
⇒(7.5*x)/(18000+x)
将返回方程的最小二乘解x*(18000+x)=7.5*x
最后的评论:
x=[0:1:999]代码>
这里不需要括号,最好这样使用:x=0:1:999代码>
似乎要对计算x1
进行元素级除法,应使用如下运算符:
y=(7.5*x)./(18000+x); %Also removed unnecessary brackets
还要注意,加法总是按元素进行的+
不是有效的MATLAB语法(但它在八度音阶下工作)。请参阅MATLAB中的有效算术数组和矩阵运算符
3. x1也有一些不必要的括号。其他人已经回答了这个问题。我只想指出一件小事。您不需要写入x=0:1:999
。最好写为x=0:999
,因为MATLAB或倍频程使用的默认增量值为1。其他人已经回答了这个问题。我只想指出一件小事。您不需要写入x=0:1:999
。最好将其写成x=0:999
,因为MATLAB或倍频程使用的默认增量值是1。,实际有效。因此,我想结论是x1没有完全正确地编写,只是偶尔工作。+
在MATLAB中不是有效的运算符。这个问题是关于MATLAB的,甚至没有倍频程标记(如果你在倍频程中尝试过的话)@SardarUsama我在MATLAB中运行了这个,不是倍频程,它工作了。但我同意这是不必要的。()