フィルターのクリア

Replacing elements of an array with a vector

1 回表示 (過去 30 日間)
Greggory
Greggory 2011 年 5 月 31 日
編集済み: Jesús Zambrano 2019 年 2 月 18 日
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
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
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
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

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by