plotting using separate axes on matlab - matlab

I'm looking to create a plot of two time series in matlab with separate axes because they are of completely different size. I understand that plotyy function is the function to use however I am having difficulty with the dates. Currently the dates are in date-vector format, so there are three separate columns containing the year, the month and the date. Do I need to convert the dates, and if so then how? Thanks in advance

Related

Plot multiple probability distribution function lines on one plot in MatLab

I'm new to matlab and am trying to work with three dimensional data. It has latitude, longitude and time as the three dimensions, and I want to create a PDF for each of these matrices and then put all of them on the same plot rather than have three separate PDF plots. I don't know how to create reproducible data for matlab for this question so if there are more questions I can provide more guidance (also would be happy to hear guidance about how to create reproducible 3 dimensional data).
Essentially I need help creating a probability distribution function for three dimensional data, and then I want to plot multiple PDF lines on the same figure.
I've tried using the histogram function and normplot() but neither has worked.

Matlab Basic fitting line regression error

Hi im trying to fit a line of best fit/R2 value on my graph. im plotting date/time (x-axis) against an arbitrary value (context agnostic) and when trying to do it through the basic fitting tools in the figure information it is greyed out. If i graph another column against the original arbitrary value column that isn't time it works fine? im not sure why? Attached photos. The column date time is recognised as datetime by matlab (yyyy,dd,mm hh:mm:ss) for example: 2021-01-10 22:30:45. For context i am trying to analyse time between a few hours and linear regression it. the other axis (y-axis) is just values between 0.4- 0.9 slowly increasing. Any help would be muchly appreciated
If it works when graphing against a column that is not datetime, it may be the format that is preventing basic fitting. You could consider converting your datetime values to Unix timestamps. Then you can plot your Unix timestamp against your second column and replace the datetime axis labels.

Extracting different values of a function vs time using MATLAB curve fitting

I feel like this should be something simple to solve - but I'm struggling to find the answer anywhere.
I have a set of 'R' values and a set of time values, I want to use curve fitting (I haven't used this part of the software before) to calculate the 'R' values at a different set of time values, literally just be able to access what is displayed in a figure created using curve fitting using a different set of time values (ie I can point the curser to the values I want on a figure and write them down but this is not efficient at all for the number of time values I have). Context is an orbital motion radius vs time.
Thanks in advance :)
You can use Matlab's fit function to do this very easily. Assuming you have your data in arrays r and t, you can do something like this:
f = fit(t, r, 'smoothingspline')
disp(f(5))
If you consult the documentation, you can see the various fit types available. (See https://www.mathworks.com/help/curvefit/fit.html)

Multiple plots to same chart in LabVIEW

I am doing a two-channel data acquisition to read out the voltages of two diodes. I am using LabVIEW to do this. Below you can see the part of the code relevant for my question.
The voltages are converted to temperatures by 1D interpolation, as shown in the above code. 0.9755 V corresponds to 2 degrees, 1.68786 V to 100 degrees. For this simple example, I expected the waveform chart to display two constant curves, one at 2 and one at 100. However, it plots only one curve that zigzags between the two values. How can I get two separate plots?
Add "Index Array" at the "yi" output of the "Interpolate 1D VI" function and expand it to two elements. Then put "Bundle" function with two inputs. Connect "Index Array" outputs to them. The resulting cluster connect to the chart.
That's it :)
Explanation: to display multiple plots in the chart, you need to feed it with a cluster, not an array. Your "Interpolate 1D VI" output gives you 2-element array (result of interpolation for 0.9755 and 1.68786), so you need to convert it to a cluster using Bundle function.
The general answer to this question is that if you open the context help and hover over the BD terminal of a graph or chart, you will see the various data types it supports:
This will help if you want to get it right every time, as the various charts and graphs can each take different types of data to display different types of graphs and remembering them can be tricky.

k-means algorithm for energy data against time and date

I am using Matlab 2015a.
I have got electricity consumption data to cluster it. Initially i am trying to cluster it against hours and dates. I have created three different variables, one for time, one for dates and third for data. I am unable to understand how should i combine these in a matrix form so that the loads are distributed according to time? Then i have tried to look how can i plot a line graph for k-means but i can only find scatter command graphs but no line plots.
Further how can i plot it as a 3-d plot?
Further at a later stage i want to include temperature variable aswel. But when the 4th variable is involved, what will the plot be? will it still be 3-d?
Any suggestions, links?
In Matlab you can create N-dimensional matrices, so you can arrange your 3D data in a N*M*3 matrix (you might want to look for the cat() function to help you out).
There are several functions that allow you to plot in 3D, one of these is scatter3() which is perfect for K-Means clustering. I don't really understand which lines you do want to plot: K-Means is about clusters and centroids (i.e. points).
If a 4th variable is involved, you can as well create a 4D matrix. Although I reckon plotting a 4D graph isn't going to be easy. A first approach might be using several colours for your scatter points with different colours for different temperatures (or temperatures range). In this case the 5th input argument for scatter3() will be helpful.
Help for scatter3() here.
Help for cat() here.