What is wrong with my code?
Afficher commentaires plus anciens
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);
Réponses (3)
Star Strider
le 5 Août 2016
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 commentaires
Alexandra Huff
le 5 Août 2016
Star Strider
le 5 Août 2016
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
Alexandra Huff
le 5 Août 2016
Star Strider
le 5 Août 2016
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
le 5 Août 2016
idx=sub2ind(size(N),1:n, 1:n)
M=N(idx)
Walter Roberson
le 5 Août 2016
Modifié(e) : Walter Roberson
le 5 Août 2016
M = N(1:n, end-n+1:end);
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!