Input data from one array to another
3 ビュー (過去 30 日間)
古いコメントを表示
Hello. I'm currently trying to implement data from a dataset to a variable, as a function of time. I've tried the answers which are already here, but have been unsuccesful.
Current script:
time=365; % [days] Calculation time
dt=0.1; % [days] Timestep
nt=time/dt; % [-] Calculation steps
tempdata is a [365,2] dataset with an index in column 1 and temperature data in column 2.
for i=2:nt
for j=1:365
T(1)=tempdata(1,2); % Starting condition for T, as i=2:nt
Dt(1)=0; % Time elapsed
Dt(i)=Dt(i-1)+dt;
% I want to set up an if function, which takes the temperature data
% from tempdata(j,2) and puts it into T(i), if Dt(i) is equal to
% tempdata(j,1).
if Dt(i)==tempdata(j,1);
T(i)=tempdata(j,2);
else
T(i)=T(i-1);
end
end
end
This function however doesn't work. I firstly don't understand why, and secondly don't know any other way of doing this. Any of you guys know how?
Much appreciated :)
2 件のコメント
lvn
2014 年 5 月 6 日
編集済み: lvn
2014 年 5 月 6 日
Not fully sure what you are trying to do, can you elaborate? From a quick view of your program it should at least run with crashing. Is tempdata(:,1) just 1 to 365? (If this is the case, the program can be simplified greatly)
Just one hint: Dt doesn't seem to depend on the 'j' variable, so you can simply define it once on top:
Dt=0:dt:365;
Same for
T(1)=tempdata(1,2);
Just define it once on top.
採用された回答
lvn
2014 年 5 月 6 日
The main problem with your code was the double for loop. Even if a match was found, for say j=50; it was overwritten in the second iteration with j=51 and T(i)=T(i-1); Here is a code that should do what you want:
time=365; % [days] Calculation time
dt=0.1; % [days] Timestep
nt=time/dt; % [-] Calculation steps
Dt=0:dt:365; %So a vector from 0 to 365 in steps of 0.1
T=Dt*NaN; %Define a vector of the same length as Dt, start with NaN's everywhere
T(1)=tempdata(1,2); %First element fixed
for j=1:365 %Put all the exact matches
T(Dt==tempdata(j,1))=tempdata(j,2);
end
for j=2:length(T) %If no match found, put equal to previous element
if isnan(T(j))
T(j)=T(j-1);
end;
end
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Whos についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!