Plotting a function of determinant values vs n values.

3 次查看(过去 30 天)
Hi, so I have a function s(n), that spits out a n*n matrix. What I want to do is plot the determinant of each s(n) matrix that my s function makes and plot it against n from 1 to 32. I think I have to make a for loop, but I'm not entirely sure how to go about it.
Here's my code for the s function:
if true
% code
function[output]=s(n)
output=zeros(n);
for i = 1:n
for j=1:n
output(i,j)=sqrt(2./n)*sin((pi*(i-.5)*(j-.5))./n);
end
end
end
end

回答(3 个)

KSSV
KSSV 2016-7-1
编辑:KSSV 2016-7-1
I didn't get your question exactly. I understand the following:
You want to display the output of the above function s.
For a given n the above function gives output a matrix of size nXn. As it is a matrix, you can view it using surf, pcolor.
Eg.
K = s(100) ;
surf(K) ; shading interp ;
pcolor(K) ; shading interp ;

Torsten
Torsten 2016-7-1
for k=1:32
index(k) = k;
output = s(k);
determinant(k) = det(output);
end
plot(index,determinant)
Best wishes
Torsten.

José-Luis
José-Luis 2016-7-1
编辑:José-Luis 2016-7-1
I'm on a one liner spree, and you don't actually need those loops:
myFun = @(x) det(bsxfun(@(ii,jj) sqrt(2./n)*sin((pi*(ii-.5)*(jj-.5))./n),1:x,(1:x)'));
fplot(myFun,[1 32])

类别

Help CenterFile Exchange 中查找有关 Surface and Mesh Plots 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by