Inserting data of one matrix into another

조회 수: 2 (최근 30일)
Chris
Chris 2014년 9월 26일
댓글: James Tursa 2015년 4월 3일
If I have a vector a
0
0
1
1
0
0
and a vector b
5
6
and I want to input the data of b into the nonzero elements of a (which will always be together and matching the dimensions of b), so that vector c reads
0
0
5
6
0
0
What is an easy way to do this? Thank you!
Another example that it needs to work for:
a b c
_ _ _
0 4 0
0 8 0
1 3 ----> 4
1 7 8
1 3
1 7

채택된 답변

Adam
Adam 2014년 9월 26일
편집: Adam 2014년 9월 26일
  댓글 수: 10
José-Luis
José-Luis 2014년 9월 26일
Please accept the answer of it solved your problem.
Shane Hagen
Shane Hagen 2015년 4월 3일
I have a slightly different issue maybe someone can help?
I have a matrix [signal] of 315954x64 of signal data. In another matrix [FFlash] (155520x1) there is logical 1 or 0 depending on an activation
I have categorized the signal matrix to obtain a matrix [FFsignal] (155520x64) of data when there is an activation
To graph I need matrices of similar dimensions so I wanted to insert the categorized data into a matrix of zeros of size (315954x64)
For example the first group of activation is in rows 631-654 and when categorized I have data for those time points. I want to add this data to a matrix of zeros in the same time points if possible. Therego, zeros until 631-654 and so on through the set. Please help!

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Stephen23
Stephen23 2015년 4월 3일
편집: Stephen23 2015년 4월 3일
MATLAB's powerful indexing makes this easy, if we use logical indexing:
>> a = [false;false;true;true;false;false];
>> b = [5;6];
>> c = zeros(size(a));
>> c(a) = b
c =
0
0
5
6
0
0
And the same for the second example:
>> a = [false;false;true;true;true;true];
>> b = [4;8;3;7];
>> c = zeros(size(a));
>> c(a) = b
c =
0
0
4
8
3
7
  댓글 수: 3
Stephen23
Stephen23 2015년 4월 3일
편집: Stephen23 2015년 4월 3일
"I have a slightly different issue..." → ask a new question.
Shane Hagen
Shane Hagen 2015년 4월 3일
I posted the question :Inserting data into matrix of zeros from another matrix.

댓글을 달려면 로그인하십시오.


LUI PAUL
LUI PAUL 2015년 4월 3일
편집: LUI PAUL 2015년 4월 3일

try simple

a=[0;0;1;1;0;0];

b=[5;6];

p=find(a>0);

a(p)=b

a =

     0
     0
     5
     6
     0
     0
  댓글 수: 5
LUI PAUL
LUI PAUL 2015년 4월 3일
편집: LUI PAUL 2015년 4월 3일
for logical a,...try this
a = logical([0 0 1 1 0 0]);
a=double(a);
b = [5 6];
p = find(a>0);
a(p) = b
a =
0 0 5 6 0 0
what do you think @James will it work?
James Tursa
James Tursa 2015년 4월 3일
Yes.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by