How to run a function for multiple input matrices?
8 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hello,
Below is a code for swapping rows in a matrix to make it into diagonally dominant form.
A = [2 7 1 1 2; -1 -3 2 -23 2; 13 1 3 4 1; 1 2 -6 0 1; 1 -1 -2 3 -11];
B = [1 10 3; 2 1 8; 15 -5 3]
function makeDD(A)
%I originally put A = [2 7 1 1 2; -1 -3 2 -23 2; 13 1 3 4 1; 1 2 -6 0 1; 1 -1 -2 3 -11] here
% but I would like to make it work % for multiple matrices.
% test to see if a valid permutation exists
[maxrow,maxind] = max(abs(A),[],2);
if all(maxrow > (sum(abs(A),2) - maxrow))
A(maxind,:) = A;
end
DD_A = A
end
How can I make it work so that it can have multiple inputs or is it easiest to just have 2 functions one after the other and if so how can i make it so that they work in succession?
And how do i store the answer matrices with the names DD_A and DD_B?
Thanks in advance for any help, I been trying for ages to figure this out.
0 Commenti
Risposte (1)
Geoff Hayes
il 22 Apr 2020
jack - just call the function twice and store the output in separate variables or in a cell array. You will need to change your function signature so that it returns a matrix
function [DD] = makeDD(A)
% I originally put A = [2 7 1 1 2; -1 -3 2 -23 2; 13 1 3 4 1; 1 2 -6 0 1; 1 -1 -2 3 -11] here
% but I would like to make it work % for multiple matrices.
% test to see if a valid permutation exists
[maxrow,maxind] = max(abs(A),[],2);
if all(maxrow > (sum(abs(A),2) - maxrow))
A(maxind,:) = A;
end
DD = A;
Then in the command line (or from another script) just do
A = [2 7 1 1 2; -1 -3 2 -23 2; 13 1 3 4 1; 1 2 -6 0 1; 1 -1 -2 3 -11];
B = [1 10 3; 2 1 8; 15 -5 3];
C = cell(2,1);
C{1} = makeDD(A);
C{2} = makeDD(B);
2 Commenti
Geoff Hayes
il 23 Apr 2020
jack - from your code
D = cell(3,1);
C{1} = makeDD(A);
C{2} = makeDD(B);
C{3} = makeDD(C);
D is the cell array, so you should be doing
D = cell(3,1);
D{1} = makeDD(A);
D{2} = makeDD(B);
D{3} = makeDD(C);
However, if you really need to have separate variables for each with names like DD_, then just do
DD_A = makeDD(A);
DD_B = makeDD(B);
DD_C = makeDD(C);
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!