Assigning a variable to any value in a matrix
28 ビュー (過去 30 日間)
古いコメントを表示
Hi,
I am having trouble on a project involving matrices.
An example with simplified but similar code:
Matrix = [0 1 4; 4 1 3];
for x = 1:10
if x + y == 5
My goal is to have y be ANY value in the original matrix, so the if statement is true if x + ANY Matrix Value is equal to 5.
Is this possible without using an extra for loop?
Thanks!
0 件のコメント
回答 (3 件)
Star Strider
2016 年 4 月 27 日
編集済み: Star Strider
2016 年 4 月 27 日
You came close to answering it yourself. There is an any funciton.
Experiment with this to see if it does what you want:
Matrix = [0 1 4; 4 1 3];
y = Matrix;
for x = 1:10;
logic = any(x + y == 5)
end
EDIT — To see the results of the comparison for different values of ‘x’, tweak the code to store the values, and display them in an array:
Matrix = [0 1 4; 4 1 3];
y = Matrix;
for x = 1:10;
logic(x) = nnz(any(x + y == 5));
end
Result = [[1:10]', (logic > 0)']
Result =
1 1
2 1
3 0
4 1
5 1
6 0
7 0
8 0
9 0
10 0
0 件のコメント
Jon
2016 年 4 月 27 日
Try this
for x = 1:10
if sum(x + Matrix(:) == 5) > 0
disp(x)
end
end
2 件のコメント
dpb
2016 年 4 月 27 日
There are multiple possible locations...but, use logical array or find or the like--
>> x=1; % define an example x
>> (x+Matrix==5) % logical array
ans =
0 0 1
1 0 0
>> [i j]=find(x+Matrix==5); % return locations
>> disp([i j])
2 1
1 3
>>
Again, need more detail on what your end result is to be to have any real definitive implementation suggestions.
dpb
2016 年 4 月 27 日
Matrix = [0 1 4; 4 1 3];
for x = 1:10
if any(x+Matrix(:)==5)
...
NB: use of : to treat array as a vector such that any will return a single result.
You could possibly eliminate the loop entirely depending on what the resulting operation is.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!