MATLAB: Vectors must be the same length

vectors

I'm not sure what it means by "vectors must be the same length".
This is my code
i=1;
ct= 0;
Cmftct=0;
Coldct = 0;
Hotct= 0;
while (i <= n)
if (temps(i) <= 32)
Coldct = Coldct + 1;
elseif (temps(i) <=70)
Cmftct = Cmftct +1;
elseif (temps(i) <=99);
Hotct = Hotct +1;
else
Hotct = Hotct +1;
end
i = i +1;
end
figure(1)
x=[i : length(temps)];
y = temps;
plot(x, y, 'Marker', '^', 'Color', 'r', 'LineStyle', ':' ,'LineWidth', 2);
figure(2)
c = categorical(["# of cold Days", "# of Cold Days","# of Comfortable Days", "# of Hot Days"]);
b = [Coldct, Cmftct, Hotct];
bar(c, b);
end

Best Answer

Lots of problems with that:
  1. Computing x before y so x and y have different lengths
  2. Using while loop instead of vectorized.
  3. c having 4 categories - cold is repeated. Not the same as b which has 3 numbers, not 4.
Here is the fixed code:
temps = 100 * rand(1, 50);
ColdCount = sum(temps <= 32);
CmftCount = sum(temps <= 70);
HotCount = sum(temps > 70);
subplot(2, 1, 1);
y = temps;
x = 1 : length(y);
plot(x, y, 'Marker', '^', 'Color', 'r', 'LineStyle', ':' ,'LineWidth', 2);
yline(32, 'LineWidth', 2, 'Color', 'b');
yline(70, 'LineWidth', 2, 'Color', 'b');
title('Temperature vs. Day', 'FontSize', 18);
xlabel('Day', 'FontSize', 18);
ylabel('Temperature', 'FontSize', 18);
grid on;
subplot(2, 1, 2);
c = categorical(["# of Cold Days","# of Comfortable Days", "# of Hot Days"]);
b = [ColdCount, CmftCount, HotCount];
bar(c, b);
ylabel('Count', 'FontSize', 18);
grid on;