MATLAB MATLAB save command and transpose command

  • Thread starter Thread starter Saladsamurai
  • Start date Start date
  • Tags Tags
    Matlab Transpose
AI Thread Summary
To save row vectors in MATLAB as transposed columns in a text file, the standard `save` function cannot directly handle transposed variables like `r1'` because it requires variable names as strings. A common workaround involves creating new variables for each transposed vector, but this can be inefficient, especially with multiple vectors. Instead, a more efficient approach is to create a custom function that transposes the vector and saves it in one step. This function, `tSave(V)`, transposes the input vector and saves it as a text file, streamlining the process without the need for multiple new variables. This method effectively addresses the issue of managing multiple row vectors while maintaining code efficiency.
Saladsamurai
Messages
3,009
Reaction score
7
I have a bunch of row vectors saved as objects r1 r2 r3. I would like to send each set of data (row) to a text file, but I want it to save as a column. This means that I want to save the transpose of the data, i.e., r1' r2'...

Unfortunately, when I try to use
Code:
save r1.txt r1' -ascii

MATLAB thinks that the quote ' is an unbalanced string.

I know that an "easy fix" would be to create new objects like R1=r1';

but I don't really think that is efficient. How can I get around this?

thanks
Casey
 
Physics news on Phys.org
any takers on this one?
 
Saladsamurai said:
any takers on this one?

As far as I know, the MATLAB function SAVE expects the following arguments:

save(<string (filename)>, <string (variable name 1)>, ... <string (variable name N)>, <string (options)>)

You are not passing the function actual variables, just the names. That's why you can't pass r1', because that is not a string.


Why is,

r1 = r1';
save('rrrrrs.txt', 'r1', '-ascii');

not efficient?

I mean, the transpose has to be done somewhere in memory.
 
FrogPad said:
Why is,

r1 = r1';
save('rrrrrs.txt', 'r1', '-ascii');

not efficient?

I mean, the transpose has to be done somewhere in memory.

Because if I have ten r values, I have to create 10 new R=r' values.

I suppose I could write a for loop that does it for me, but for only 10 entries, that seemed a little tedious (possibly just laziness :smile:).
 
lol, yeah.

You could probably write a wrapper around the save function, to do what you want.


function tSave(V)

vt = V';

save([num2str(V) '.txt'], 'vt', '-ascii');

end

then just call this little function instead
 

Similar threads

Back
Top