plot a complex data

6 views (last 30 days)
John
John on 9 Jan 2015
Commented: David Young on 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 Comments
John
John on 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 on 9 Jan 2015
Edited: John on 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.

Sign in to comment.

Accepted Answer

David Young
David Young on 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 Comments
John
John on 9 Jan 2015
Edited: John on 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 on 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.)

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!