how can i write this matrix in matlab?

2 次查看(过去 30 天)
how can i write this matrix in matlab? this matrix is (n+1)*(n+1) that n must be enter by user

采纳的回答

Rick Rosson
Rick Rosson 2014-11-2
x = zeros(n+1);
x(1,1:2) = [ 2 1 ];
x(end,end-1:end) = [ 1 2 ];
for k = 2:n
x(k,k1:k+1) = [ 1 4 1 ];
end

更多回答(2 个)

dpb
dpb 2014-11-2
Given input n and
r = [1 4 1];
c={repmat(r,n,1)}; % cell array of n copies of r
m=blkdiag([2 1],c{:},[1 2]); % expand c to comma list for blkdiag
clear c

Image Analyst
Image Analyst 2014-11-2
Lots of ways, for loop, addition, assignment, zeros(), etc. I'd probably use eye() and circshift(). Hint:
diagArray = 4 * eye(7)
See what that gives you. Imagine shifting some diagonal arrays with circhsift() and adding the 3 arrays together. That should be enough hint to get you started.
  1 个评论
dpb
dpb 2014-11-3
I thought the blkdiag solution kinda' cute, IA... :)
Excepting for needing the temporary cell array; couldn't see a simple way to generate the comma-separated list in one swell foop...

请先登录,再进行评论。

类别

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

Community Treasure Hunt

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

Start Hunting!

Translated by