Clear Filters
Clear Filters

Help me avoid this error: Empty matrix: 0-by-1

3 views (last 30 days)
I have a program like this:
clc
a=[0 0; 150 0.5; 300 0.35; 450 0.253; 600 0.22; 750 0.276; 900 0.183; 1050 0.228; 1200 0.17; 1350 0.207; 1500 0.2; 1650 0.19; 1800 0.187; 1950 0.21; 2100 0.176; 2250 0.197; 2400 0.17]
b=[900 900 750 2100 750 150 150 150 300]'
for i=1:5
c=find(a(:,1)==b(i));
f=a(c,:);
d(i)=prod(f);
end
e=sum(d)
My main program for many vectors b with components of a. I want to find e, but few result of c are Empty matrix: 0-by-1
Help me. Thanks.
  1 Comment
Pham
Pham on 5 Aug 2013
Edited: Pham on 5 Aug 2013
Thank you for helping me. But I do not understand why in my main program, with 3 value "150 150 150" in vector b, then the vector c is "0.5 Empty matrix: 0-by-7 Empty matrix: 0-by-8", without "0.5 0.5 0.5" ??

Sign in to comment.

Accepted Answer

Iain
Iain on 5 Aug 2013
Edited: Iain on 5 Aug 2013
Change : d(i) = prod(f); to
if isempty(f)
d(i) = NaN;
else
d(i) = prod(f);
end
and e = sum(d) to:
e = nansum(d);
If NaN isn't convenient, change it for something that is.

More Answers (1)

Jan
Jan on 5 Aug 2013
d = nan(1, 5);
for i=1:5
c = (a(:, 1) == b(i));
if any(c)
d(i) = prod(a(c, :));
end
end

Categories

Find more on Multidimensional Arrays in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!