plot a complex data

2 vues (au cours des 30 derniers jours)
John
John le 9 Jan 2015
Commenté : David Young le 10 Jan 2015
I have been trying to plot a data of magnetic fields obtained from a commercial software. So, far my code is:
[dataBx, dataBy, dataBz]= ReadData(infoFile, gemFile, dataFileBxr, dataFileBxi, dataFileByr, dataFileByi,dataFileBzr, dataFileBzi);
x = (dataBx);
y = (dataBy);
z = (dataBz);
img = (((imag(x) - ((1i)).*(imag(y))/2)));
clims = [min(min(img)) max(max(img))*1E-1];
subplot(2,1,1);
hold all
plot (img)
colormap jet;
subplot(2,1,2);
h_img = imagesc(rms(img));
axis square;
colormap jet;
dataBx, dataBy and dataBz consists of complex numbers which I read in first two line. Then, I stored it in x, y and z respectively. Then, I used the formula: (img=(B1x-B1y)/2). So, here in this code, I represented B1x as x and B1y as y.
Then, I tried to plot it and get the value of magnetic field in colormap values as I obtained from a commercial software. But, I am not able to get that value. I don't know what is wrong here. Can anyone suggest me something? I have tried a lot of things but I am not able to work it out.
May be the formula of clims is wrong.
  2 commentaires
John
John le 9 Jan 2015
I think I found the problem but I dont know how to solve it. In the workflow window. It shows that the size of h_img is 1x362 while the size of dataBx, dataBy and dataBz is 313x362. So, I think this value is responsible for the wrong image. Does anybody know which portion affects the size of img and how to optimize it?
Thank you for reading.
John
John le 9 Jan 2015
Modifié(e) : John le 9 Jan 2015
This is not the problem. I optimized the code. and found somewhat better result. How can I make this image smooth in the middle. It shows some lines in the below image. If it could be made smoother, it could be more meaningful.

Connectez-vous pour commenter.

Réponse acceptée

David Young
David Young le 9 Jan 2015
The call to plot
plot (img)
looks wrong, because img is 2-D. I would expect you to be using image(), imagesc() or imshow() to inspect the array at this point.
The call to imagesc
h_img = imagesc(rms(img));
looks wrong because rms(img) is 1-D. I would expect you to be using plot() at this point, assuming that you do want to see the rms of each column of img (which is what rms() computes).
  2 commentaires
John
John le 9 Jan 2015
Modifié(e) : John le 9 Jan 2015
Thank you for your answer Mr. David Young. I optimized the code and till now I got the image as shown in the above comment. Can you help in optimizing more of this image so that it looks more smoother. I have attached the optimized code with that comment too.
Regards, John.
David Young
David Young le 10 Jan 2015
If the issue is image smoothing, you can smooth an image by convolution with a Gaussian. If you search answers, you'll find some suggestions about how to do this.
If that doesn't help, I think different issues are coming up now, and the best way forward would be for you accept my answer (if you feel it was useful) and to start a new question about the smoothing issue, with your current code.
(By the way, "optimized" does not normally mean "debugged". It means adjusted to minimise some measure of the use of resources.)

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Blue dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by