Error: Unbalanced or unexpected parenthesis or bracket

The matlab show this error "Error: Unbalanced or unexpected parenthesis or bracket." in this part of the code:
%**************************************
nome = '105.txt';
[pathstr, name, ext] = fileparts(nome);
load(nome);
x=eval([name '(:,1)']);
y=eval([name '(:,2)']);
z=eval([name '(:,3)']);
%*************************************
---------------------------------------------------------------
105.txt contains 3 columns with several rows...
But on my friend's pc don't show this error... I have a Asus x64, with windows 10 and Matlab R2014b...
I think the problem is not from the code as it was functional on other pc's. I think it has to do with my compiler, but I don't know how to fix it ...
Already installed the version Matlab 6.5 R13, but the same error appears ...
What may be the source of this error?

6 Comments

name is a variable or is the file name.txt?
¿Name es una variable o un archivo de texto llamado "name.txt"?, ya que para que no te dé error ahí name debe ser un string
The "name" came from of "[pathstr, name, ext] = fileparts(nome);"
The previous code is:
%********************************************
nome = '105.txt';
[pathstr, name, ext] = fileparts(nome);
load(nome);
x=eval([name '(:,1)']);
y=eval([name '(:,2)']);
z=eval([name '(:,3)']);
%**********************************************
*
105.txt contains 3 columns with several rows...
Adam
Adam on 11 Nov 2019
Edited: Adam on 11 Nov 2019
The 2nd output of fileparts is simply a filename. Trying to index into it in that way would be expected to produce an error.
Why not just open the file and read its content in instead of confusing the issue with eval, whose usage is regularly recommended against, for reasons exactly like this?
"I think the problem is not from the code ..."
In fact the problem is very badly designed code that relies on complex eval to generate invalid variable names. That code should be thrown away, it is never going to be reliable or efficient.
So how should I replace the code?
Any suggestion?

Sign in to comment.

 Accepted Answer

I think name is variable, it's simply (there is no need for eval):
x = name(:,1);
y = name(:,2);
z = name(:,3);

1 Comment

The "name" came from of "[pathstr, name, ext] = fileparts(nome);"
The previous code is:
%********************************************
nome = '105.txt';
[pathstr, name, ext] = fileparts(nome);
load(nome);
x=eval([name '(:,1)']);
y=eval([name '(:,2)']);
z=eval([name '(:,3)']);
%***********************************************
105.txt contains 3 columns with several rows...

Sign in to comment.

More Answers (1)

Categories

Find more on Scripts 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!