Creating a matrix with variables

4 次查看(过去 30 天)
Hi Folks,
So I'm trying to create my own version of a continuous least squares. Here's a picture of what I'm attempting to do.. (these notes were taken in class, the integrals should be attached to all elements of the matrix, sorry)
I figured I would approach this problem by creating the first row of my matrix which was coded as
syms('x','a','b','n')
f = sqrt(x);
A = [int(x.^(n),a,b) int(x.^(n+1),a,b) int(x.^(n+2),a,b)];
b = [int(x.^(n)*f,a,b) int(x.^(n+1)*f,a,b) int(x.^(n+2)*f,a,b)];
N = 2;
And tested with n=0, which gave me the results I wanted. Now to use a for loop to create the rest of the matrix. I want n grow by 1 for each loop until I hit N, and I also want to add another row to my matrix each time my n goes up. I'm a simple man and figured the following code would work, but I keep getting the error:
Index exceeds matrix dimensions.
Error in sym/subsref (line 814) R_tilde = builtin('subsref',L_tilde,Idx);
when I run this
for i=1:N
A(i,:) A(i+1,:);
n = n+1;
end
Any advice, tips, tricks, etc would be appreciated!

采纳的回答

Kian Azami
Kian Azami 2017-10-7
编辑:Kian Azami 2017-10-7
I think you can easily do this by saving your A variable to a new variable like B and a small change in your for loop:
n = 1;
for i=1:N
B(i,:) = A;
n = n+1;
end
Now each time the loop is run (which for your case is N = 2) the A variable is calculated by the new n and it will assign the A to a new raw of B.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 MATLAB 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by