saving a matrix

1 view (last 30 days)
Kamuran
Kamuran on 14 Feb 2011
Hi,
I am trying to compare my two codes , which should give same results. Both code have the same variable names such as vx vz. I am trying to calculate velecotiy profiles. For that I open to Matlabs and run both codes . Than I write
vz1=vz; save ( ' FT','vza')
and I load FT in the other matlab window, but it directly takes vz values in the the program. And I get 0 as difference, where I should be getting something around 1e-15 ( I know that because I copy paste the results from one to other).
Is there a way to solve my problem witouth changing the variable names?
  2 Comments
Paulo Silva
Paulo Silva on 14 Feb 2011
Your question isn't very clear and you didn't provided the needed code.
Kamuran
Kamuran on 15 Feb 2011
Let me try to explain, because I can not provide my all code (it is too long) . I have two different codes , one is evolved from the other, therefore, they have the same variable names, only difference is the way I present my equations.
I am calculating a velocity profile in a cavity such as vz. And I want to compare two results, for that I open two matlabs at the same time and run the codes. Then, in one Command window I write
FT=vz; % vz is (200*200) matrix
save FT
After that I load FT in the second command window;
Load FT
max(max(abs(vz-FT))) % this should be around 1e-15 but matlab gives me 0 . As Matt point out Matlab is overwritting all the variables in the second command window when I load it.

Sign in to comment.

Accepted Answer

Matt Fig
Matt Fig on 14 Feb 2011
When you load, use the functional form of LOAD in order to avoid overwriting your variables.
X = load('FT');
% Then use X.vz, etc.
.
.
.
.
.
EDIT
As I state below in the comment, copy paste is not reliable with floating points. I want to say it again here so the formatting is better.
format long
pi % copy this and paste below
pi- 3.14159265358979
ans =
3.10862446895044e-015
  2 Comments
Kamuran
Kamuran on 15 Feb 2011
It is not working.
I wrote
vza=vz; % just to change name hoping that it will work.
FT=vza;
save FT
and in the other window
X=load ('FT')
max(max(abs(vz-X.vza)))
result is 0
Matt Fig
Matt Fig on 15 Feb 2011
If you did what I showed above and got zero difference, I have to question the method you used to find a real difference. Copy and paste with floating point numbers is often unreliable. Try this:
format long
pi % Now copy this using ctrl+c
pi- 3.14159265358979
ans =
3.10862446895044e-015

Sign in to comment.

More Answers (2)

Robert Cumming
Robert Cumming on 15 Feb 2011
The error could be coming from the copy/paste between the two matlabs.
Are you 100% sure that you have different values?
When I do the same as your doing I get a max of 0 (as you do), and if I copy the data from the editor from 1 matlab to another I get an difference of ~1e-15.
But I know my numbers are exactly the same, so the difference is definately coming from the copy and paste step.

Kamuran
Kamuran on 16 Feb 2011
Yes you are right, the difference is coming from copy paste .
Thank you

Tags

Community Treasure Hunt

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

Start Hunting!