Replacing elements of an array with a vector
1 回表示 (過去 30 日間)
古いコメントを表示
I know that you can select elements out of a matrix that meet a condition and assign a new value, i.e.
a = [1 2 3 4 5 6 7 9];
a(a>4) = 0;
a
1 2 3 4 0 0 0 0 0
but what if you have a multidimensional matrix? I want to do something similar to the following:
a = [1 2 3 4; 0 0 0 0];
a(a(1,:)==1) = [a b];
a
a 2 3 4
b 0 0 0
The situation is that I have a matrix where the first three dimensions are spatial and then there's a fourth that contains information about the spatial element. Right now, I'm using For loops to check every element and assign a vector [a b c d] to the spatial element. I would like to vectorize this and it's frustrating how easy it is to do this with one scalers, but it doesn't work with vectors.
2 件のコメント
Laura Proctor
2011 年 5 月 31 日
Could you show what it is your starting with and what you would like to have as the result?
Matt Fig
2011 年 5 月 31 日
I agree, make a real simple example of your actual data and show what you want to do. I am reading this as you have something like this:
A = round(rand(3,3,3,3)); % Sample data
and you want to find, say, all instances which match this:
V = squeeze(A(2,3,2,:))
along the fourth dimension and replace it with, say:
[4;5;6]
Is this close to what you want?
回答 (1 件)
Jesús Zambrano
2019 年 2 月 18 日
編集済み: Jesús Zambrano
2019 年 2 月 18 日
Hi Greggory,
According to the solution you show, you can get it by doing:
a(:, a(1,:)==1) = [a; b ]
Best regards,
Jesús
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!