How to generate and calculate with empty values of matrix-elements
    7 次查看(过去 30 天)
  
       显示 更早的评论
    
PROBLEM:
I want to use logical functions to perform calculations between
matrices and don't know how to generate an empty value NaN.
EXAMPLE:
I use the two matrices below and if the conditions are not satisfied,
the output should be empty:
clear all;
close all;
m=rand(10,5);
n=rand(10,5);
T = zeros(size(m)); % Make another array to fill up...
for i = 1:numel(m)
    if m(i)>.5  && n(i)>.5
       T(i) = m(i+1)+n(i+1);
    else
       T(i) = 'NaN';
    end
end
However, I obtain the following error:
??? In an assignment A(I) = B, the number of elements in B and
 I must be the same.
I hope someone know the correction of this mistake
Thank you in advance
Emerson
1 个评论
  Oleg Komarov
      
      
 2011-8-28
				Please format the code as indicated here: http://www.mathworks.com/matlabcentral/answers/13205-tutorial-how-to-format-your-question-with-markup
采纳的回答
  Paulo Silva
      
 2011-8-28
        T(i) = 'NaN';
is wrong, your arrays have numeric values but you are trying to put one string in the array, you can't mix numeric values with strings on arrays, do this instead:
T(i) = NaN;
See this simple example:
a=[1 2;3 4];a(1)='NaN'; %error because of what I told you
a=[1 2;3 4];a(1)=NaN; %No error
更多回答(1 个)
  Oleg Komarov
      
      
 2011-8-28
        You can write directly:
NaN
instead of
'NaN'
but my suggestion would be to preallocate NaNs directly and delete the else part:
T = NaN(size(m))
The other problem is that you are assigning to T(i) the next values in m and n, but if i = 50 then the index will exceed the matrix dimensions.
So, what do you want to accomplish here? (you can also avoid the loop)
EDIT replaced & with |:
m = rand(10,5);
n = rand(10,5);
T = [m(2:end,:) + n(2:end,:); NaN(1,size(m,2))];
T(m(1:end-1,:) <= .5 | n(1:end-1,:) <= .5) = NaN;
9 个评论
  Oleg Komarov
      
      
 2011-8-30
				You have to be careful when checking m and n, if their first element are both bigger than .5 then the first element of T is the sum of the SECOND elements of m and n. 
After correcting for the | I do get consistent results. Try to replace in my example:
m = rand(3);
n = rand(3);
You'll be able to visualize and compare more easily.
另请参阅
类别
				在 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!


