What is wrong with my code?

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 个)

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 个评论

I think that it what I want however, im trying for a more general code, not something as specific as that.
Another approach:
N = 6; % Argument
n = 3; % Argument
M = randi(99,N); % Create ‘M’
M(1:n, N-n+1:N) = rand(n) % Set Top Right Corner To ‘rand’
79 68 70 0.119 0.34039 0.75127
95 76 4 0.49836 0.58527 0.2551
65 74 28 0.95974 0.22381 0.50596
4 39 5 4 49 68
85 65 10 44 45 65
93 17 82 38 64 17
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.
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.

请先登录,再进行评论。

类别

帮助中心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!

Translated by