matlab中的syms函数,如何写循环并累乘

就如图所示的这种简单的函数,代入n个x,然后累乘。
x随便取,无所谓

img

X=xlsread('1.xlsx');
N=size(X),n=N(1)
syms k c;
for i=n
    f(i)=k*X(i)/c
end
F=prod(f);  %我这个式子写出来f全为0

f(1)=k*X(1)/c
f(2)=k*X(2)/c
F=f(1)*f(2);  %这样单独写出来就没事

这是因为你的循环没有对1到n,而只是对i=n循环了
改成这样的就可以

X=xlsread('1.xlsx');
N =size(X); n=N(1);
syms k c;
for i=1:n % 1~n做循环
    f(i)=k*X(i)/c;
end
F=prod(f)  %我这个式子写出来f全为0

确实是因为没写成1:n的问题,同时建议向量化处理,例如:

X=[1 2 3 4 5];
syms k c;
F=prod(k.*X./c)

syms的功能和sym函数相同,但syms可以同时创建多个符号对象,因此在创建多个符号变量时语法上要比使用sym简单。

1、创建符号变量x和y;

例如:syms x y

2、列出所有符号变量、函数和数组

创建一些符号变量、函数和数组如:syms a f(x);A = sym('A',[2 3]);