Y-axis value of plot is stored as zero
Show older comments
Hello,
I am performing a computation and plotting the result.
I have three signals, FA, FB and C (15223x1 complex double). I am computing the output signal such that,
Op = C .* FB / FA
Now I am plotting the output Op (15223x15223 complex double) against time (15223x1 double). By default, matlab ignores the imaginary parts of complex Op which is fine by me.
I am getting a plot, although the variable Op stores 0 (15223x15223 complex double). Now I need to perform further computations with Op and I am not able to do that as it contains only zero.
Why is it storing zero?
Also I have tried to extract the values of axes from the plot, which again contains only zero.
What am I doing wrong? How should I proceed? Pls help me.
6 Comments
Adam
on 25 Apr 2019
What are you expecting the results of all this to be? You are using a plot rather than an image so I assume you are expecting a vector result? If so I would guess you need to use
./
not matrix division in
Op = C .* FB ./ FA
Or are you really expecting to have 15223 plots on a single graph?
If you expect a single vector then you should be stopping when you get Op as size 15223x15223 which is clearly wrong, rather than just carrying on with it anyway!
vanrapa
on 25 Apr 2019
Adam
on 25 Apr 2019
Well, using something like
doc imagesc
is more usual if you want to plot a matrix, especially one that big as there is no way you would be able to understand 15223 line plots all on top of each other, even if they did contain the correct data.
If the data you are extracting from the axes is wrong then so is the result that went into them - i.e. Op so that is where something is going wrong with the calculation.
You should always use your original data when you have it. Extracting data from a plot to do further calculations on is a last resort unless you are actually drawing on a plot or image and extracting from that.
vanrapa
on 26 Apr 2019
Adam
on 26 Apr 2019
If Op is what you are plotting then that is where your data is. If non-zero components appear in the plot then they are in Op too.
What you seem to be saying though is you have 15223 plots, of which only two are different, judging by your plot?
You can look at
real( Op )
and find the row/column of non-zero values. You can sum along columns or rows (possibly the abs) and ignore all below a threshold if the rest are close to 0, but not precisely zero
vanrapa
on 29 Apr 2019
Answers (0)
Categories
Find more on Surface and Mesh Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!