My Hilbert function is correct. I ran the function for different n-values and the entries were correct. I believe my script is in need of work.
Appending a column to a matrix in a for loop.
24 次查看(过去 30 天)
显示 更早的评论
So the task that I am trying to complete is as follows: write a script that starts with a random m vector, and apply the HilbertMatrix (HilbertMatrix(m)) to it N times, saving the result of the n-th multiplication as the n-th column of a matrix V. This is what I have so far:
r = randi([1 100],1,1); %Choose a random number "r" between 1 and 100.
m = randi([1 100],r,1); %Create a vector "m" with dimensions rx1 i.e. a random vector.
H = HilbertMatrix(r); %Create a Hilbert matrix of size rxr.
for i=1:N %For every i, you multiply the vector by the Hilbert matrix.
v = H^(i).*m; %Your result goes to the the 1st column of a new matrix.
V = [V v]; %You continue so that the n-th multiplication of the Hilbert with the vector goes to the nth column.
end
disp(V) %Show the matrix.
I seem to be getting a few errors. I feel though that my logic is there. I am new to MATLAB but have had exeprience with Python. Hopefully, they are syntax errors. Here is my HilbertMatrix function code:
function h = HilbertMatrix(m)
H = zeros(m,m) %Create an empty mxm matrix.
for k=1:m
for j=1:m
H(j,k)=1/(j+k-1) %Definition of the Hilbert Matrix.
H(k,j)=H(j,k) %Entries of a Hilbert Matrix are symmetric along the diagonal.
end
end
end
Any and all help will be greatly appreciated. Thank you!
回答(2 个)
Pierre Benoit
2014-9-10
First, about your function, there is a problem with the output because Matlab is case sensitive. Replace h with H.
Then for your script, ".*" is element-wise multiplication, not matix multiplication. It's simply * Also, you didn't define V before using it, you try to concatenate an undefined vector with v. You could do
V = zeros(r,N);
for i=1:N %For every i, you multiply the vector by the Hilbert matrix.
V(:,i) = H^(i)*m; %Your result goes to the the ist column of a new matrix.
end
Now, this should work. Let me know if I misunderstood something or if there is something wrong.
1 个评论
Julia
2014-9-10
编辑:Julia
2014-9-10
Hi,
(I am writing this while trying to debug your code ;) )
- Your function HilbertMatrix() returns only a zero-matrix. Your output is "h" but you compute "H".
- You never define "N" (upper limit of the loop).
- Then you get an error for
v = H^(i).*m;
--> delete the point:
v = H^(i)*m;
- And finally you have to initialize V before using it. You write
V = [V v];
But in the first iteration there is no V.
My solution was:
v = H*m;
V = v;
and start the loop with i=2
I hope this yields the right result.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!