Matlab Script Inputs
I'm trying to run the example file "MATLAB Script - Lorenz Diff Eq.vi" and get the following error. Any idea why?
Error 1047 occurred at LabVIEW: LabVIEW failed to send variable to the script server.
Server:"Inappropriate input array sizeE" in MATLAB Script - Lorenz Diff Eq.vi
Possible reason(s):
LabVIEW: LabVIEW failed to send variable to the script server.
Also, when I run the example code from the help file in a separate vi:
a=rand(50)
surf(a)
it works fine, but when I add inputs and outputs to the same script, the inputs and outputs work, but it never draws the surface 'a' or seems to update 'a'.
Thanks for your help!
Attachments:
matlabtest.vi 14 KB
Alejandro,
Thanks for your help. When I run the sample code for the rand() and surf() functions, Matlab runs the code properly, opens a new figure to display it, updates dynamically and even outputs the variable 'a' back to Labview correctly.
So, outputs seem to work fine, but I haven't been able to get any inputs to work. So that leads me to believe that the Matlab server is working (as it can crunch code and send back data), but perhaps it's not enabled to take an input or I'm trying to pass the input improperly.
Is there any trick to send an input to Matlab? In other words, if I send a constant, for example, the number '2' to Matlab, I wire a constant '2' to the input on the Matlab VI block and then set the data type as 'Real', and I get the
error.
Does the error have to do with the array size (as it claims, even though I'm trying to pass in a single real constant, not an array...), or is it really a communication error as you suggest? Thanks for your help!
Neville
Similar Messages
-
Using array as a MATLAB script input in a subVI - labview crashes
Hello
I am having troubles in creating a subVI that includes a matlab file which has an array as an input.
I have created a VI, that executes a simple matlab script, having an array as an input and an array as an output. This worked fine, untill i assigned the terminals in order to use it as a subVI.
After the terminals have been assigned, labview instantly crashes when running the file.
I also created a VI to test the subVI, but I couldn't get it to work at all, labview always crashed...
Does anyone know a solution to my problem? They only thing i can think of is to not use it as a subVI, but then my main file will get huge, as all the matlab code would be included in there...
attached are both files, so that you better understand my problem. (test_... is the main file)
any help will be greatly appreciated!
- Jarno
edit: I'm using labview 2013 with windows 7 and matlab 2014
Solved!
Go to Solution.
Attachments:
test_subVI_array_into_script.vi 8 KB
subVI_array_into_script.vi 8 KBHey Jarno,
I did some playing around with this (sorry for the delay) and another workaround we can use is adding an Always Copy to the array before passing it into the Script Node. This will allow you to continue using Double precision arrays instead of going to Singles.
It looks like there is an issue with the array copy that is passed into the SubVI through the terminal, but we can get around it by making a new copy that the Script Node can properly work with.
Tim A.
National Instruments -
Input data type of Matlab script node
Hi,
I have 1D array of complex number in single precision.
Matlab script node is used to import data into Matlab and do some data processing, and then export.
Data type of input is currently double precision.
How to re-define this input data type of the Matlab script node?
Thanks,Right, arrays of singles are not supported. See Comparison of MathScript RT Module and the MATLAB® Software Data Types in LabVIEW
As for memory usage, Profiling the VI should let you know how much memory Labview uses when running your code. Communication with MATLAB® is done through ActiveX, and I'm actually not 100% sure whether it will reflect memory usage from script execution. I think it'll be simple enough to profile your VI with and without the MATLAB Script node and note the memory usage difference...
Misha -
Sending time and voltage samples as input to matlab script block
Hello,
I am planning to use Matlab script in labview and the matlab scritp block needs inputs of time and voltage values of sampled signal to post process.
Can someone explain me of how to send the sampled values of time and volatge after every 'x' interval of time to the matlab scritp block I mean if the sampling rate is 100Hz then 100samples will be collected in 1 sec but I want to send both time and votlage values collected after every 10 seconds to the matlab scritp block.
Thanks.Hi,
I am using DAQUnit 6016 that samples an analog signal of sensor.The vi I tried is attached below.
Attachments:
Labview&Matlab.vi 55 KB -
Error produced when trying to pass variables to a Matlab script
For some reason, LabVIEW produces an Error 1047 (Unable to pass variable to the script server) whenever I create an input variable to a Matlab code block.
Outputs work fine (for example, connecting an output "a" to a Matlab code block that says "a=rand(50)" correctly produces a 50x50 array of random numbers that can be displayed in LabVIEW). However, creating any kind of input node, whether or not the associated variable is mentioned in the MATLAB script, brings up an error 1047.
Any ideas what could be causing this? I'm using LabVIEW 7.0 and MATLAB 7 (R14). I've read the article
>here and that's not the problem, and I've also updated my matscript.dll to the latest version, 7.0.0.2, which also made no difference.For what its worth,
I work in a company with a lot of Matlab users, and I,m programming in Labview and Matlab.
When I create a testrig measurement I always have to convert data into Malab format, so I used the script server a lot... exept we have a limited pool of Matlab
licenses so my work was halted whenever the licences where gone.
So I wrote a Write2Matlab vi.
This vi can log data from a measurement and write it in a Matlab readable file format (Matlab6 R12).
After logging you can append more data. It works with(Double,Single,Int32,Int16,U16,U8,String) matrix see for yourself in an example (Write2matlab_test.vi).
Perhaps this is an alternative solution for your problem.
Please send me a reply if you find it usefull.
John
Attachments:
Write2Matlab.llb 1145 KB -
How to insert data from file into matlab script node
I have interfaced input data from file to be processed using matlab script node. But the problem is that I could not capture the multiple data into matlab script node and to convert it into matrix. Further to this I need to process the data by plotting graphs from it. Thank you in advance for the advice
Zarina,
To clarify your problem, you have a script node contaning your Matlab code. Are you then using the standard LV functions to load in your data from a file and pass it into the script node?
Regards
Tristan -
How to load a variable using MATLAB Script?
I need to load a selected variable from .mat file, using MATLAB script , and analyse it.
the attched shows my vi, there are two inputs nodes 'file' contains the .mat file path, and 'varn' contains varibale name in that .mat file which can be selected by user. Using " load(file)" the whole .mat file is loaded in the workspace and become avaiable at output node, however I am not able to pass a selected variable name through string "varn" input, MATLAB script does not recognize the variable.
any idea to reslove it is realy appreciated.
Attachments:
load a variable.JPG 18 KBDownload the VI and .MAT file. Run the VI, and it'll plot the data inside of the .MAT file.
Andy Chang
National Instruments
LabVIEW Control Design and Simulation
Attachments:
testfile.zip 5 KB -
Getting error when passing variable to Matlab script
Hi
I am using LabVIEW 2013 Version 13.0f2 (32bit) and MATLAB R2014b (Version: 8.4.0.150421) in Windows 7 Professional Version 6.1 (Build 7601: Service Pack 1).
I am trying to pass measured data to a matlab script to plot but I get errors.
I have made a small program to make the problem easyer to solve and I get this error
Error 1050 occurred at LabVIEW: Error occurred while executing script. Error message from server: ??? Reference to a cleared variable A.
. in MatlabTest.vi
I tried the solution mentioned in http://digital.ni.com/public.nsf/allkb/4475BC3CEB062C9586256D750058F14B though it was intended for an older version. This gave me this error instead
Error 1048 occurred at LabVIEW: LabVIEW failed to get variable from the script server. Server:"??? Undefined function or variable 'num'.
" in MatlabTest.vi
The problem occures when I try to access the input, in other words I can have inputs to my script as long as I do not use them.
How can I solve this?
Attachments:
MatlabTest.vi 7 KBThank you so very much.
I shold of cours have realised that that was what happened but I always use the three clearing lines (close all, clear all, clc) in the beginning of a script to make sure that no old and irrelevant data corrupts my script and did not think about when the inputs were generated.
Again, Thank you! -
Variables not correctly sent to Matlab script server
When using a Matlab script node in my LabVIEW code, I've noticed that variables are sometimes improperly sent to the script server. What happens is an m-by-n matrix in LabVIEW arrives in Matlab as a 0-by-n or 0-by-0 empty matrix. Typically the affected matrices are large -- 500 to 20,000 elements.
Unfortunately, we haven't been able to recreate the error intentionally. On the other hand, when the error does occur by chance, it frequently continues to show up until the system is rebooted.
This error has appeared using the same code on multiple systems, all of which are running Matlab 6.1 and LabVIEW 6.0.2.
If anyone has encountered similar problems or has any insight into this problem, your help would be
greatly appreciated.
Zach Lerner
OnWafer Technologies, Inc.I encountered this problem several times too.
I passed a 'real vector' of size ~80 to a MatLAB input node, and it turned out to be a 0-by-0 empty matrix in MatLAB. This happens nearly every time after I reboot the computer.
What I do is first to find out which variable is empty (from the MatLAB command window). Then stop the VI and rewire that input node.
p.s. I have LabVIEW 6.0.2 with MatLAB 6.0.
Dan -
Open a file using matlab script block
Hello!
I want to open a file from a specified directory using matlab script block.
The input of this block is a string with file's name......but it doesn't work in this way. I have to change the input data or I have to change it into matlab matlab script?
Some idea?
Thanks!
Attachments:
example.PNG 4 KBOoooppss!
My computer is crazy....sorry.
I'm near to solve my problem...
The problem is that I have a column of strings like this
str=['labview'
'labview2'
'labview3'
'labview4']
I use the double command but the byte array to string block only converts me an element, do you know is exist another block to change all the elements.
I've tried to do with a for loop block....using an index array and changing with i the index element, but it doen'st work.
You have some idea? -
Hello!
I'm using matlab script block in my aplication. The m-file (from matlab) contain an 'if' that depends of an input of labview.
I want to pass trough this condition only once when input's value changes, but labview "covert" this 'if' in a 'while' and pass trough this sequence n times.
How can I to impose to pass throug the sequence once the input's value change. It's better to specifie it from matab or from labview.
Thank you in adavanceWhat is surrounding the matlab script block? LabVIEW should be modifying the matlab code, it should be connecting with matlab and matlab executes its code, returning the results to LabVIEW. Can you do a screen capture of the part of the code that contains the matlab stuff? If yes make sure that it is saved as a .jpg (not .bmp!) for size reasons. If not, if you can send the part of your code that includes the matlab stuff that would help.
P.M.
Putnam
Certified LabVIEW Developer
Senior Test Engineer
Currently using LV 6.1-LabVIEW 2012, RT8.5
LabVIEW Champion -
Hi there,
I want to integrate my Matlab script in Labview,
the input variable should be a Matrix like
the following A = [ 0 256 ; 1 256 ;1.5 100 ; 1.55 110; 1.59 55; 1.6 56 ; 9 256; 14 256 ;15 100 ]
How do I do this in Labview, I tried an array but
no succes...
Bye for nowhi chris .. thanks for the reply ...
here's the results from 'ver
MATLAB Version 7.0.1.24704 (R14) Service Pack 1
MATLAB License Number: 227039
Operating System: Microsoft Windows XP Version 5.1 (Build 2600: Service Pack 2)
Java VM Version: Java 1.4.2_04 with Sun Microsystems Inc. Java HotSpot(TM) Client VM
MATLAB
Version 7.0.1 (R14SP1)
Simulink
Version 6.1 (R14SP1)
Aerospace
Blockset
Version 1.6.1 (R14SP1)
Bioinformatics
Toolbox
Version 1.1.1 (R14SP1)
CDMA Reference
Blockset
Version 1.1 (R14SP1)
Communications
Blockset
Version 3.0.1 (R14SP1)
Communications
Toolbox
Version 3.0.1 (R14SP1)
Control System
Toolbox
Version 6.1 (R14SP1)
Curve Fitting
Toolbox
Version 1.1.2 (R14SP1)
Data Acquisition
Toolbox
Version 2.5.1 (R14SP1)
Database
Toolbox
Version 3.0.1 (R14SP1)
Datafeed
Toolbox
Version 1.6 (R14SP1)
Embedded Target for Infineon C166 Microcontrollers Version 1.1.1 (R14SP1)
Embedded Target for Motorola
HC12
Version 1.1.1 (R14SP1)
Embedded Target for Motorola
MPC555
Version 2.0.1 (R14SP1)
Embedded Target for OSEK
VDX
Version 1.1.1 (R14SP1)
Embedded Target for TI C2000
DSP(tm)
Version 1.1.1 (R14SP1)
Embedded Target for TI C6000
DSP(tm)
Version 2.2.1 (R14SP1)
Excel
Link
Version 2.2.1 (R14SP1)
Extended Symbolic
Math
Version 3.1.1 (R14SP1)
Filter Design HDL
Coder
Version 1.1 (R14SP1)
Filter Design
Toolbox
Version 3.1 (R14SP1)
Financial Derivatives
Toolbox
Version 3.0.1 (R14SP1)
Financial Time Series
Toolbox
Version 2.1.1 (R14SP1)
Financial
Toolbox
Version 2.4.2 (R14SP1)
Fixed-Income
Toolbox
Version 1.1 (R14SP1)
Fixed-Point
Toolbox
Version 1.1 (R14SP1)
Fuzzy Logic
Toolbox
Version 2.2 (R14SP1) -
Using a 3D matrix with a matlab script block
Hi all of you,
it is possible to input a 3D matrix (e.g. 10x4x20) to a matlab script block or you have to unfold this data in a 2D array?
Do you know what i have to do to input directly a 3D array (array of real numbers) to a matlab script block.
P.D.; I'm using labview 7.0 and matlab 6.5
Thank you very much
LarsonHi,
as far as I know there is only the possibility to have an input for a
2D array to matlab scriptnode. Thus you should convert your 3D data to
2D in LV and reconvert it in your matlab code into 3D.
When you select 3D data as an output of a script node it automatically
appears as 2D (but no data will be lost). So when you have to use it in
LV again as 3D data, what you have to do is reconvert it back from 2D
to 3D.
Hope this helps! -
Hi everyone.
I have a m.file in matlab used to simulate an optical scheme characterized by different parameters.
I
need to combine different values of these parameters in order to
obtain a kind of calibration. To do this I though to use labview
creating a number of for loops to change the value of each parameter.
Using the matlab script tool in labview the simulation runs ok.
To
change one parameter, for example Alfa_laser, I created an input
linked to the control and attached to the script. At this point, the
simulation does not work.... and I don't know why!!!!
Someone can help me
Thanks
matomato
Attachments:
simulator.vi 51 KBmatomato wrote:
To
change one parameter, for example Alfa_laser, I created an input
linked to the control and attached to the script. At this point, the
simulation does not work.... and I don't know why!!!!
Someone can help me
You have no inputs for the script node, so there is no link. All that you have is an output node tied to an array indicator. That's probably why the simulation doesn't work. Also, you have no loop. Do not use the "Run Continuously" button if that's what you're trying to do.
To learn more about LabVIEW it is recommended that you go through the tutorial(s) and look over the material in the NI Developer Zone's Learning Center which provides links to other materials and other tutorials. You can also take the online courses for free. -
Dynamically import .m file into Matlab Script
I would like to dynamically load a Matlab .m file into the Matlab Script function in a VI.
In other words, based upon a path to a .m file (control on the FP), load the .m file into the Matlab Script and then execute it.
Does anyone know how to do this?
Solved!
Go to Solution.Hi RedSoxFanatic,
It's not possible to do what you're asking. However, I can think of a couple options that will give you the same behavior.
1. If you only have a few of your .m files that will be called you can use a case structure with these files already loaded. The user can then choose which case to run.
2. You can have the Matlab Script Node run you particular .m file based on an input (number maybe), but this does also require you to have a predefined list of your .m files.
Justin D.
Justin D.
Applications Engineer
National Instruments
Maybe you are looking for
-
HT204053 can i set up a new icloud account and transfer files
I have gotten divorced and really need to change my email address which is linked to icloud and has all my diary/itune/ibook purchases linked to it. I understand i CANNOT change my email so this forces me to have to create a new icloud account. How
-
Please is possible to create the most common adf components dinamically?
Or you have some comment or advise? I need to create dynamically forms from a definition on tables. I don't need but anyway I didn't find a way to create entities dinamically, only views. Thank you :)
-
Decreasing battery lufe after upgrading to kraft a6000 s033 150402
Hi, I have an A6000 that I'm using since around two weeks now. Very recently I received an update which update the version of "Vibe UI" to A6000_S033 But soon after the update battery performance start decreasing now there is 1% drop after every 8-9
-
"Date Modified" for all files being changed if "Automatically write to XMP" is on
Recently upgraded from LR3 (v3.4.1) from LR2 on OSX 10.6.8 and have always had Catalog Settings > Automatically write changes into XMP turned on. When browsing existing JPG files in my Library (no Develop changes, no keywording, no Presets, no Import
-
I am a newbie and confused!! It says no burn limits and it says burn identical playlists up to seven times! I'm still confused! Help! The way I read it is as long as you keep your music in purchased and don't put them in a playlist you have no burn l