Replace matrix entries with entries from another matrix

6 visualizzazioni (ultimi 30 giorni)
There are two matrices A and B as under:
A = [0 0 0 0 0; 0 0 0 0 0; 0 0 0 0 0];
B = [1 1 1;2 2 2;3 3 3];
I want to create a third matrix C in which the columns of B replace columns of A incrementally i.e columns of B move inside A. For example:
C1 = [0 0 0 0 1;0 0 0 0 2;0 0 0 0 3];
C2 = [0 0 0 1 1;0 0 0 2 2;0 0 0 3 3];
C3 = [0 0 1 1 1;0 0 2 2 2;0 0 3 3 3];
C4 = [0 1 1 1 0;0 2 2 2 0;0 3 3 3 0];
  2 Commenti
Waseem Akhtar
Waseem Akhtar il 15 Lug 2021
It's not a pattern, rather, the columns entries of B matrix should replace that of A matrix in a loop. For example, in the first increment the C matrix should be:
C1 =
0 0 0 0 1
0 0 0 0 2
0 0 0 0 3
In next increment, it should be:
C2 =
0 0 0 1 1
0 0 0 2 2
0 0 0 3 3
and likewise for next increments. You may better understand it by running the matrices defined in my query in the Matlab.
THanks

Accedi per commentare.

Risposta accettata

Simon Chan
Simon Chan il 15 Lug 2021
I do it in a cell array:
clear; clc;
A = [0 0 0 0 0; 0 0 0 0 0; 0 0 0 0 0];
B = [1 1 1;2 2 2;3 3 3];
combine = [A,B];
idx = -1:-1:-4;
M=arrayfun(@(x) circshift(combine,[0,x]),idx,'UniformOutput',false);
C = cellfun(@(x) x(:,1:5),M,'UniformOutput',false)
If you really want the name to be C1, C2, C3 and C4, then
C1 = C{1};
C2 = C{2};
C3 = C{3};
C4 = C{4};
  3 Commenti

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Prodotti


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by