Assigning a variable to any value in a matrix
    18 次查看(过去 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 中查找有关 Resizing and Reshaping Matrices 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



