"Index exceeds the number of array elements (1)."

16 views (last 30 days)
load('air.txt')
Air.temp = air(:,1);
Air.press = air(:,2);
Air_R = 0.287;
load('argon.txt')
Argon.press = argon(:,2);
Argon.temp = argon(:,1);
Argon_R = 0.208;
load('helium.txt')
Helium.press = helium(:,2);
Helium.temp = helium(:,1);
Helium_R = 2.080;
for k = 1:length(air)
Air(k).vol = (Air_R*Air(k).temp)./Air(k).press;
end
for k = 1:length(argon)
Argon(k).vol = (Argon_R*Argon(k).temp)./Argon(k).press;
end
for k = 1:length(helium)
Helium(k).vol = (Helium_R*Helium(k).temp)./Helium(k).press;
end
Using the ideal gas law to caululate the velocity of argon, helium and air, but I keep getting and Error.
"Index exceeds the number of array elements (1)."
When I run the code through I only get the volume of air butnot the volumes of argon or helium? I tried to also create a auser defined function, but I wasn't able to figure out what was wrong with that either.
  3 Comments
Jessica Larry
Jessica Larry on 29 Apr 2020
It says there's an error in line 31. Iv'e attached the 3 text files, and in the code you can see that i set each colum to a different field within a structure. Could it possibly be becuase Air is a 1X1 strcut?

Sign in to comment.

Accepted Answer

Toder
Toder on 29 Apr 2020
The way you define your struct in the first few lines results in Air being a 1x1 struct with two fields (temp and press), each of which is 38x1. So calling Air(2).temp throws an error because Air is only 1x1. To use the indices correctly, your first for loop should read
for k = 1:length(air)
Air.vol(k) = (Air_R*Air.temp(k))./Air.press(k);
end

More Answers (0)

Community Treasure Hunt

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

Start Hunting!