2017-09-27 3 views
0

benötigen I wie verschiedene Block Diagonalmatrizen zu erzeugen:Pass Zeichenfolge als Funktion Eingabeargument in Matlab

blkdiag(0,0,0, ... ,0,unit)

blkdiag(0,0,0, ... ,0,unit,unit)

.

.

.

blkdiag(unit,unit, ... ,unit,unit)

in etwa 100 iteriert und bewerten sie mit unit eine m*m Matrix ist. Ich erzeuge die Zeichenfolge des Arguments in einer Schleife, aber Funktion versteht nicht char Eingabe und ich weiß nicht, was zu tun ist!

jede Hilfe ist willkommen ...

Antwort

2

blkdiag will numerische Werte als Eingaben in eine durch Kommata getrennte Liste. Eine einfache Möglichkeit, eine durch Kommas getrennte Liste zu erstellen, besteht in der Verwendung von Zellenfeldern.

Ich gehe davon aus, dass durch „100 iteriert“ Sie bedeuten, dass Sie 100 Werte blkdiag, mit dem ersten Aufruf sind 99 Nullen und eine Instanz von unit, und der letzte Anruf ist 100 Fälle von unit vorbei sind.

unit = magic(5); % some random test matrix for unit 
total_iterations = 100; % total number of iterations to go through 
C = cell(2*total_iterations-1);  % total size of cell array 
C(1:total_iterations-1) = 0; 
C(total_iterations:end) = unit; 
for iter = 1:total_iterations 
    new_matrix = blkdiag(C{iter:iter+total_iterations-1}); 
    % do other stuff here... 
end 

C{a:b} erzeugt eine durch Kommata getrennte Liste der Elemente von C, die genau das, was wir brauchen, ist.

+0

danke ... Zelle ist genau das, was ich brauchte ... wusste nicht darüber ... – HMDRZAA

Verwandte Themen