how to plot from a 60dimension array in one figure.
2 ビュー (過去 30 日間)
古いコメントを表示
Hi, I have a Array 1989 x 4 x 60 each dimension containing spectra measurments. now I want to plot all in on figure with: figure1=figure hold on x = AmplitudeArray(:,1,1) for i=1:1:60 y = AmplitudeArray(:,4,i) plot (x,y) end
unfortunately this results in only 5 spectra to be plotted instead of the 60 I need.
3 件のコメント
Adam Danz
2018 年 7 月 16 日
編集済み: Adam Danz
2018 年 7 月 16 日
Some diagnostics to try
- Scroll through values of the array to make sure the values make sense and are in the expected ranges. Are they all NaN, inf, -inf, etc?
- Step through your for-loop in debug mode and see each set of data updated on the plot. If you don't see an update, look at those x,y values to determine why.
- Are you limiting your axis ranges (xlim, ylim) such that only some of your data are visible?
- Is your for-loop actually executing 60 times?
- Is the size of your array the size that you expect?
- Are some of your data much greater in value than other data such that the axes are being collapsed and smaller data becomes invisible?
採用された回答
Adam Danz
2018 年 7 月 16 日
編集済み: Adam Danz
2018 年 7 月 16 日
First, please format your code in order to minimize the work that needs to be done for people to troubleshoot your code.
I just simulated your data with random numbers using the size you described. Note that this is a 3 dimensional array (not 60).
AmplitudeArray = rand(1989,4,60);
When I executed your code, the for-loop plotted all 60 iterations. So check these:
- size(AmplitudeArray)
- the value of i at the end of the loop
Lastly, you can skip the for-loop and do all the plotting in 1 line of code.
plot(repmat(AmplitudeArray(:,1,1),1,60), squeeze(AmplitudeArray(:,4,[1:60])))
2 件のコメント
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!