Inserting data of one matrix into another

7 ビュー (過去 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 日
a(a ~= 0) = b
  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 Center および File ExchangeMATLAB についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by