我有以下函数处理大写 K 和小写 k 和 gamma 值的数组。
N = 3;
k = randi([1,1000],N+1,1,"double");
gamma = randi([1,100],N+1,1,"double");
K = @(x) [zeros(N,N)];
我需要用小写 k 和 x 的特定值填充此函数句柄。对于 N=3 的示例,相应的大写 K 矩阵为:
看这个大写的 K 矩阵,可以看到模式是从绿色矩阵中的前两个元素开始,复制它们的值,将它们右移一次,下移一次,然后增加每个变量的索引在元素中乘以1。
我想使用以下函数返回大写的 K:
function K = karray (k,N)
K = @(x) [zeros(N,N)];
for i=1:1:N
for j=1:1:N
K(i,j) = (k(i)*gamma(i)+k(i+1)*gamma(i+1))*x(i)^2+k(i)+k(i+1);
K(i,j+1) = -3*k(i+1)*gamma(i+1)*x(i)^2-k(i+1);
end
end
end
我最初的想法是使用嵌套的 for 循环来填充大写 K,但由于 K 是一个函数句柄,所以我不能简单地使用 来访问 K 中的每个元素K(i,j)
。我认为我填充 K 的方法是正确的,但我不确定如何正确访问 K 中的每个元素。
这里spdiags用于创建对角矩阵。否则,您可以使用 for 循环来填充对角矩阵。