What is wrong with my code?

조회 수: 1 (최근 30일)
Alexandra Huff
Alexandra Huff 2016년 8월 5일
편집: Walter Roberson 2016년 8월 5일
Hi. I am trying to write a function that takes two inputs (N and n) and return a n by n array at the top right corner of N. So far i have:
function M = top_right(N,n)
M = N(1:n, 1:n);

답변 (3개)

Star Strider
Star Strider 2016년 8월 5일
I’m not exactly certain what you want to do.
See if this works for you:
N = 6; % Argument
n = 3; % Argument
M = zeros(N); % Create ‘M’
M(1:n, N-n+1:N) = 1 % Set Top Right Corner To ‘1’
M =
M =
0 0 0 1 1 1
0 0 0 1 1 1
0 0 0 1 1 1
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
  댓글 수: 4
Alexandra Huff
Alexandra Huff 2016년 8월 5일
The first way is what I want but I am trying to figure out how to do it without defining specifically what N and n is. Does that clarify what I am looking for better? So, I am trying to take two inputs N and n, where N's dimension is always greater than or equal to n. Then the function returns a n by n square array at the top right corner of N.
Star Strider
Star Strider 2016년 8월 5일
I don’t see any way to do what you want without specifically defining ‘N’ and ‘n’ unless you do it randomly:
N = randi(8); % Argument
n = randi(N-2); % Argument
M = zeros(N); % Create ‘M’
M(1:n, N-n+1:N) = 1 % Set Top Right Corner To ‘1’
I’m keeping the matrices small for convenience. You can also define ‘n’ as:
n = randi(N-randi(N-1));
That way, you don’t have to define anything specifically, since all the parameters are random integers.

댓글을 달려면 로그인하십시오.


Azzi Abdelmalek
Azzi Abdelmalek 2016년 8월 5일
idx=sub2ind(size(N),1:n, 1:n)
M=N(idx)

Walter Roberson
Walter Roberson 2016년 8월 5일
편집: Walter Roberson 2016년 8월 5일
M = N(1:n, end-n+1:end);

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by