如何定义其元素在 For 循环中创建的向量?
How to define a vector that its elements are created in a For Loop?
我想定义一个包含五个元素的向量 X:
syms a
X = zeros(1,5)
X(1) = 1;
for k=1:4
X(k+1)=X(k)+a^2;
end
实际上我需要向量X,它的元素应该基于变量a。但是当我写上面的代码时,我在 Matlab 中遇到了一个错误:
The following error occurred converting from sym to double:
Error using symengine (line 58)
DOUBLE cannot convert the input expression into a double array.
If the input expression contains a symbolic variable, use VPA.
Error in Code2 (line 5)
X(k+1)=X(k)*a^2;
如何解决这个问题?
您将符号变量与双精度变量混合,
Double 包含一个值,只有当 a 是一个 double 并且已经包含一个值(该值可以是函数的输入)时,您才可以使用您编写的循环。
例如:
function ret=testFunc(a)
X = zeros(1,5)
X(1) = 1;
for k=1:4
X(k+1)=X(k)+a^2;
end
ret=X
end
如果您想使用 syms(用于其他符号分析),您也可以将 x 定义为一个符号,例如:
syms a x
x(1)=1;
for i=2:5
x(i)=x(i-1)+a.^2;
end
现在,x 是 a 的函数,如果您打印 x,您将得到:
[ 1, a^2 + 1, 2*a^2 + 1, 3*a^2 + 1, 4*a^2 + 1]
要计算 x 的值,您仍然需要输入 a 的值。
Matlab help suggest subs function for replacing a in wanted value:
y = subs(x,a,4)
在这一点上 y 仍然是一个符号,您需要使用
将其设为双精度
double(y)
我想定义一个包含五个元素的向量 X:
syms a
X = zeros(1,5)
X(1) = 1;
for k=1:4
X(k+1)=X(k)+a^2;
end
实际上我需要向量X,它的元素应该基于变量a。但是当我写上面的代码时,我在 Matlab 中遇到了一个错误:
The following error occurred converting from sym to double:
Error using symengine (line 58)
DOUBLE cannot convert the input expression into a double array.
If the input expression contains a symbolic variable, use VPA.
Error in Code2 (line 5)
X(k+1)=X(k)*a^2;
如何解决这个问题?
您将符号变量与双精度变量混合, Double 包含一个值,只有当 a 是一个 double 并且已经包含一个值(该值可以是函数的输入)时,您才可以使用您编写的循环。 例如:
function ret=testFunc(a)
X = zeros(1,5)
X(1) = 1;
for k=1:4
X(k+1)=X(k)+a^2;
end
ret=X
end
如果您想使用 syms(用于其他符号分析),您也可以将 x 定义为一个符号,例如:
syms a x
x(1)=1;
for i=2:5
x(i)=x(i-1)+a.^2;
end
现在,x 是 a 的函数,如果您打印 x,您将得到:
[ 1, a^2 + 1, 2*a^2 + 1, 3*a^2 + 1, 4*a^2 + 1]
要计算 x 的值,您仍然需要输入 a 的值。
Matlab help suggest subs function for replacing a in wanted value:
y = subs(x,a,4)
在这一点上 y 仍然是一个符号,您需要使用
将其设为双精度double(y)