Verfasst am: 18.01.2009, 18:04
Titel: Vektoren aus Matrix erstellen
Hallo,
ich habe folgendes Problem und würde mich über eure Hilfe sehr freuen.
Ich habe einen Zeilenvektor der länge 3000. Diesen soll ich in 1000 3-er Blöcke umschreiben die danach verändert werden sollen. z.b soll aus [1 0 1] ->
[0 1 0 1 1] werden. Allerdings darf ich keine Schleifen benutzen.
Habe mir folgendes gedacht: Den Vektor in ein Matrix mit 3 Zeilen und 1000 Spalten umwandeln. Danach die Spalten in einzelne Vektoren umwandeln und mittels switch-case in den 5-er Block umschreiben.
Wieso darfst Du keine Schleifen benutzen und wie genau funktioniert die Umwandlung des 3x1-Vektors in den 5x1-Vektor? Also was soll da wie umgewandelt werden?
Also ohne ne for-Schleife, die das dann für jeden Vektor macht, wüsste ich jetzt nicht, wie das funktionieren soll...
Befehl an.
was danach passieren soll hab ih allerdings auch noch nicht verstanden.
lg, apn
NeuInMatlab
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 19.01.2009, 16:18
Titel:
Hallo, danke für eure Hilfe. Hab mittlerweile rausbekommen wie ich es mache. Hier mein Programm:
x=randn(1,3000);
x=(x<0).*0+(x>0).*1; %Jetzt habe ich in x nur 1 oder 0 in zufälliger Reihenfolge stehen
A=zeros(3,1000);
A( : )=x; %Jetzt habe ich meine 3er-Blöcke in den Spalten
b=A'*[4 2 1]'; %Zur Gewichtung gedacht; z.B: wird aus[1 0 1]->5
b=b';
B=[1 0 1 1 0]'*(b==7)+[1 1 0 1 1]'*(b==6)+[0 0 1 0 0]'*(b==5)...
+[0 1 1 0 1]'*(b==4)+[1 0 0 1 0]'*(b==3)+[1 0 1 0 1]'*(b==2)...
+[0 0 0 1 1]'*(b==1)+[0 1 0 0 1]'*(b==0);
y=B( : )' % Nun habe ich mein x codiert in y stehen
Dies war eine alte Prüfungsaufgabe, bei der es Punktabzug für die Benutzung von Schleifen gab.
Trotzdem Danke für die Hilfe.
Mfg
Christian
x = rand(1,3000); % Zufallssignal
x = round(x); % 0 und 1
A = reshape(x,3,1000); % in 3er Blöcke unterteilen
At = A';
klartxt = [000; 001; 010; 011; 100; 101; 110; 111]; % Originial
codtxt = [01001; 00011; 10101; 10010; 01101; 00100; 11011; 10110]; % Codiert
B = zeros(size(A,2),size(codtxt,2));
for i = 1:size(klartxt,1)
B = B+ismember(At,klartxt(i,:),'rows')*codtxt(i,:); % finde Klartext und substituiere end
Bt = B';
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.