Tag Archives: matlab
What is the reason for error in HDL Coder and Cadence Stratus HLS tutorial?
Hi all,
I’m trying to complete this tutorial https://se.mathworks.com/help/hdlcoder/ug/get-started-with-matlab-to-hls-workflow-using-hdl-coder-app.html, but I get stuck in the Verification step in Workflow Advisor. I get this output in the Workflow Advisor window in Verification step (Verify with HLS Test Bench):
## Begin TestBench generation.
Code generation successful.
### Collecting data…
### Begin HDL test bench file generation with logged samples
### Generating test bench data file: x_in.dat.
### Generating test bench data file: y_out_expected.dat.
### Generating test bench data file: delayed_xout_expected.dat.
### Generating test bench file: mlhdlc_sfir_fixptClass_tb.hpp
### Running Stratus Importer on the generated testbench.
### Working on mlhdlc_sfir_fixpt_bdw_import_log.txt as mlhdlc_sfir_fixpt_bdw_import_log.txt.
Stratus Importer failed. See ‘mlhdlc_sfir_fixpt_bdw_import_log.txt’ for details.
Error in CadenceStratus>>generateBDWImportScripts at 0
Error in CadenceStratus>>postTBGen at 0
Error in HLSPostCodegenDriver>>postTBGen at 0
Error in Manager>>wfa_runHLSSimulation at 0
And following error message to Matlab Command window:
Error using emlhdlcoder.HLSDriver.Tools.CadenceStratus/generateBDWImportScripts
Stratus Importer failed. See ‘mlhdlc_sfir_fixpt_bdw_import_log.txt’ for
details.
Error in emlhdlcoder.HLSDriver.Tools.CadenceStratus/postTBGen
Error in emlhdlcoder.HLSDriver.HLSPostCodegenDriver/postTBGen
Error in emlhdlcoder.WorkFlow.Manager/wfa_runHLSSimulation
And here is the content of the ‘mlhdlc_sfir_fixpt_bdw_import_log.txt’ file is:
INFO: Searching /sw/rhel7/cadence/STRATUS2301 for template
WARNING: BDW_IMPORT_ML_CLOCK_FREQ = 0, using default 5.0.
INFO: Processing template tb.cc
FATAL ERROR: Unable to process template tb.cc
I’m using Matlab version R2024a and Cadence Stratus 23.01, but tested also with 22.01 which gave same error. What are the software versions that this tutorial is verified to work?Hi all,
I’m trying to complete this tutorial https://se.mathworks.com/help/hdlcoder/ug/get-started-with-matlab-to-hls-workflow-using-hdl-coder-app.html, but I get stuck in the Verification step in Workflow Advisor. I get this output in the Workflow Advisor window in Verification step (Verify with HLS Test Bench):
## Begin TestBench generation.
Code generation successful.
### Collecting data…
### Begin HDL test bench file generation with logged samples
### Generating test bench data file: x_in.dat.
### Generating test bench data file: y_out_expected.dat.
### Generating test bench data file: delayed_xout_expected.dat.
### Generating test bench file: mlhdlc_sfir_fixptClass_tb.hpp
### Running Stratus Importer on the generated testbench.
### Working on mlhdlc_sfir_fixpt_bdw_import_log.txt as mlhdlc_sfir_fixpt_bdw_import_log.txt.
Stratus Importer failed. See ‘mlhdlc_sfir_fixpt_bdw_import_log.txt’ for details.
Error in CadenceStratus>>generateBDWImportScripts at 0
Error in CadenceStratus>>postTBGen at 0
Error in HLSPostCodegenDriver>>postTBGen at 0
Error in Manager>>wfa_runHLSSimulation at 0
And following error message to Matlab Command window:
Error using emlhdlcoder.HLSDriver.Tools.CadenceStratus/generateBDWImportScripts
Stratus Importer failed. See ‘mlhdlc_sfir_fixpt_bdw_import_log.txt’ for
details.
Error in emlhdlcoder.HLSDriver.Tools.CadenceStratus/postTBGen
Error in emlhdlcoder.HLSDriver.HLSPostCodegenDriver/postTBGen
Error in emlhdlcoder.WorkFlow.Manager/wfa_runHLSSimulation
And here is the content of the ‘mlhdlc_sfir_fixpt_bdw_import_log.txt’ file is:
INFO: Searching /sw/rhel7/cadence/STRATUS2301 for template
WARNING: BDW_IMPORT_ML_CLOCK_FREQ = 0, using default 5.0.
INFO: Processing template tb.cc
FATAL ERROR: Unable to process template tb.cc
I’m using Matlab version R2024a and Cadence Stratus 23.01, but tested also with 22.01 which gave same error. What are the software versions that this tutorial is verified to work? Hi all,
I’m trying to complete this tutorial https://se.mathworks.com/help/hdlcoder/ug/get-started-with-matlab-to-hls-workflow-using-hdl-coder-app.html, but I get stuck in the Verification step in Workflow Advisor. I get this output in the Workflow Advisor window in Verification step (Verify with HLS Test Bench):
## Begin TestBench generation.
Code generation successful.
### Collecting data…
### Begin HDL test bench file generation with logged samples
### Generating test bench data file: x_in.dat.
### Generating test bench data file: y_out_expected.dat.
### Generating test bench data file: delayed_xout_expected.dat.
### Generating test bench file: mlhdlc_sfir_fixptClass_tb.hpp
### Running Stratus Importer on the generated testbench.
### Working on mlhdlc_sfir_fixpt_bdw_import_log.txt as mlhdlc_sfir_fixpt_bdw_import_log.txt.
Stratus Importer failed. See ‘mlhdlc_sfir_fixpt_bdw_import_log.txt’ for details.
Error in CadenceStratus>>generateBDWImportScripts at 0
Error in CadenceStratus>>postTBGen at 0
Error in HLSPostCodegenDriver>>postTBGen at 0
Error in Manager>>wfa_runHLSSimulation at 0
And following error message to Matlab Command window:
Error using emlhdlcoder.HLSDriver.Tools.CadenceStratus/generateBDWImportScripts
Stratus Importer failed. See ‘mlhdlc_sfir_fixpt_bdw_import_log.txt’ for
details.
Error in emlhdlcoder.HLSDriver.Tools.CadenceStratus/postTBGen
Error in emlhdlcoder.HLSDriver.HLSPostCodegenDriver/postTBGen
Error in emlhdlcoder.WorkFlow.Manager/wfa_runHLSSimulation
And here is the content of the ‘mlhdlc_sfir_fixpt_bdw_import_log.txt’ file is:
INFO: Searching /sw/rhel7/cadence/STRATUS2301 for template
WARNING: BDW_IMPORT_ML_CLOCK_FREQ = 0, using default 5.0.
INFO: Processing template tb.cc
FATAL ERROR: Unable to process template tb.cc
I’m using Matlab version R2024a and Cadence Stratus 23.01, but tested also with 22.01 which gave same error. What are the software versions that this tutorial is verified to work? cadence, stratus, hls MATLAB Answers — New Questions
Error using symengine First argument must not contain functionals.
Dear MathWorks-Community,
I recived the following error message:
Error using symengine
First argument must not contain functionals.
Error in mupadengine/evalin_internal
Error in mupadengine/fevalHelper
Error in mupadengine/feval_internal
Error in sym/diff (line 107)
R = feval_internal(symengine, ‘symobj::diff’, S, x, n);
When I wanted to run my code it appeard for line 10 where I am calculating diffL_over_theta1dot. Can someone please explain me why it worked for diffL_over_alpha1 in line 4 but not for line 10?
L is a symfun.
Can anyone help me with resolving this issue?
Thanks a lot in advance!
syms tau_1
syms theta_1(t) alpha_1(t)
diffL_over_alpha1=diff(L,alpha_1);
alpha_1dot=diff(alpha_1,t);
tau_1==diff(diffL_over_alpha1dot,t)-diff(L,alpha_1dot);
theta_1_dot=diff(theta_1,t);
diffL_over_theta1dot=diff(L,theta_1_dot)
0==diff(diffL_over_theta1dot,t)-diff(L,theta_1);Dear MathWorks-Community,
I recived the following error message:
Error using symengine
First argument must not contain functionals.
Error in mupadengine/evalin_internal
Error in mupadengine/fevalHelper
Error in mupadengine/feval_internal
Error in sym/diff (line 107)
R = feval_internal(symengine, ‘symobj::diff’, S, x, n);
When I wanted to run my code it appeard for line 10 where I am calculating diffL_over_theta1dot. Can someone please explain me why it worked for diffL_over_alpha1 in line 4 but not for line 10?
L is a symfun.
Can anyone help me with resolving this issue?
Thanks a lot in advance!
syms tau_1
syms theta_1(t) alpha_1(t)
diffL_over_alpha1=diff(L,alpha_1);
alpha_1dot=diff(alpha_1,t);
tau_1==diff(diffL_over_alpha1dot,t)-diff(L,alpha_1dot);
theta_1_dot=diff(theta_1,t);
diffL_over_theta1dot=diff(L,theta_1_dot)
0==diff(diffL_over_theta1dot,t)-diff(L,theta_1); Dear MathWorks-Community,
I recived the following error message:
Error using symengine
First argument must not contain functionals.
Error in mupadengine/evalin_internal
Error in mupadengine/fevalHelper
Error in mupadengine/feval_internal
Error in sym/diff (line 107)
R = feval_internal(symengine, ‘symobj::diff’, S, x, n);
When I wanted to run my code it appeard for line 10 where I am calculating diffL_over_theta1dot. Can someone please explain me why it worked for diffL_over_alpha1 in line 4 but not for line 10?
L is a symfun.
Can anyone help me with resolving this issue?
Thanks a lot in advance!
syms tau_1
syms theta_1(t) alpha_1(t)
diffL_over_alpha1=diff(L,alpha_1);
alpha_1dot=diff(alpha_1,t);
tau_1==diff(diffL_over_alpha1dot,t)-diff(L,alpha_1dot);
theta_1_dot=diff(theta_1,t);
diffL_over_theta1dot=diff(L,theta_1_dot)
0==diff(diffL_over_theta1dot,t)-diff(L,theta_1); symbolic MATLAB Answers — New Questions
Simulink model doesn’t oscillate
Hi,
I’m trying to model an reaction wheel inverted pendulum and I find this article: https://www.mdpi.com/2079-9292/13/3/514#B1-electronics-13-00514. And now I have to identify the friction coefficient, b_theta. They mesure the natural oscillation of the pendulum by swinging. And then implement this formula in simulink to estimate b_theta by comparing the results:
On the right is my model and on the left is the model present in the article. The probleme is that my simulation doesn’t oscillate, the result is always 0. And i don’t know what the probleme is. I’m using a fixed step of 1e-3 and the solver is on auto (I try multiple solvers but the result is the same).Hi,
I’m trying to model an reaction wheel inverted pendulum and I find this article: https://www.mdpi.com/2079-9292/13/3/514#B1-electronics-13-00514. And now I have to identify the friction coefficient, b_theta. They mesure the natural oscillation of the pendulum by swinging. And then implement this formula in simulink to estimate b_theta by comparing the results:
On the right is my model and on the left is the model present in the article. The probleme is that my simulation doesn’t oscillate, the result is always 0. And i don’t know what the probleme is. I’m using a fixed step of 1e-3 and the solver is on auto (I try multiple solvers but the result is the same). Hi,
I’m trying to model an reaction wheel inverted pendulum and I find this article: https://www.mdpi.com/2079-9292/13/3/514#B1-electronics-13-00514. And now I have to identify the friction coefficient, b_theta. They mesure the natural oscillation of the pendulum by swinging. And then implement this formula in simulink to estimate b_theta by comparing the results:
On the right is my model and on the left is the model present in the article. The probleme is that my simulation doesn’t oscillate, the result is always 0. And i don’t know what the probleme is. I’m using a fixed step of 1e-3 and the solver is on auto (I try multiple solvers but the result is the same). model MATLAB Answers — New Questions
Dynamic matrix columns combinations
Hello,
I would like to find all possible combinations of a matrix columns, with each column contribute a value, in each itteration of a loop. The matrix size changes in each itteration. For example:
A = [1 2 3
4 5 6
7 8 9].
should produce:
1 2 3
1 2 6
1 5 3 etc.
but should not produce:
1 4 2 for example.
My problems:
When insert the matrix to combvec function nothing happens. The function accept vectors – and since I do it with different matrix size in each Itteration of a loop I can’t write it manually.
ndgrid also requires vectors – and since I need to choose a combination index in other variable – I’m not clear how this happens.
I don’t have combination function in my Matlab version.
Is there a way to define vectors dynamically in a loop? any idea on to how overcome this? Do I need to write a combination function myself?Hello,
I would like to find all possible combinations of a matrix columns, with each column contribute a value, in each itteration of a loop. The matrix size changes in each itteration. For example:
A = [1 2 3
4 5 6
7 8 9].
should produce:
1 2 3
1 2 6
1 5 3 etc.
but should not produce:
1 4 2 for example.
My problems:
When insert the matrix to combvec function nothing happens. The function accept vectors – and since I do it with different matrix size in each Itteration of a loop I can’t write it manually.
ndgrid also requires vectors – and since I need to choose a combination index in other variable – I’m not clear how this happens.
I don’t have combination function in my Matlab version.
Is there a way to define vectors dynamically in a loop? any idea on to how overcome this? Do I need to write a combination function myself? Hello,
I would like to find all possible combinations of a matrix columns, with each column contribute a value, in each itteration of a loop. The matrix size changes in each itteration. For example:
A = [1 2 3
4 5 6
7 8 9].
should produce:
1 2 3
1 2 6
1 5 3 etc.
but should not produce:
1 4 2 for example.
My problems:
When insert the matrix to combvec function nothing happens. The function accept vectors – and since I do it with different matrix size in each Itteration of a loop I can’t write it manually.
ndgrid also requires vectors – and since I need to choose a combination index in other variable – I’m not clear how this happens.
I don’t have combination function in my Matlab version.
Is there a way to define vectors dynamically in a loop? any idea on to how overcome this? Do I need to write a combination function myself? combination MATLAB Answers — New Questions
what toolbox to include for regression
I am running the following code on MATLAB Grader
A=[13 16 19 21 24 26 28]
M=[13 20 23 31 36 42 48]
[r,m,b] =regression(A,M)
It is throwing the following error.
"Undefined function ‘regression’ for input arguments of type ‘double’."
What toolbox I need to include to over come this error?I am running the following code on MATLAB Grader
A=[13 16 19 21 24 26 28]
M=[13 20 23 31 36 42 48]
[r,m,b] =regression(A,M)
It is throwing the following error.
"Undefined function ‘regression’ for input arguments of type ‘double’."
What toolbox I need to include to over come this error? I am running the following code on MATLAB Grader
A=[13 16 19 21 24 26 28]
M=[13 20 23 31 36 42 48]
[r,m,b] =regression(A,M)
It is throwing the following error.
"Undefined function ‘regression’ for input arguments of type ‘double’."
What toolbox I need to include to over come this error? regression MATLAB Answers — New Questions
How to model forced convection in battery cell/pack?
Dear community members,
I would like seek your suggestion on ways to model "forced air convection" in battery cell and battery pack. the natural convection can be modeled using "convective heat transfer" block. liquid cooling can also be modeled using cooling plate blocks, but i am unable to model forced air convection. please reply.
thank you.Dear community members,
I would like seek your suggestion on ways to model "forced air convection" in battery cell and battery pack. the natural convection can be modeled using "convective heat transfer" block. liquid cooling can also be modeled using cooling plate blocks, but i am unable to model forced air convection. please reply.
thank you. Dear community members,
I would like seek your suggestion on ways to model "forced air convection" in battery cell and battery pack. the natural convection can be modeled using "convective heat transfer" block. liquid cooling can also be modeled using cooling plate blocks, but i am unable to model forced air convection. please reply.
thank you. simscape, simulink, battery_system_management, battery cooling MATLAB Answers — New Questions
How to read and extract certain columns from a tenv3 file?
There are two aspects of the problem.
How do I read a tenv3 data file? The source file can be found here.
I wish to extract the data under the 4th, 9th, 11th, and 13th column, such that the first row of the extracted data should read,
" 54847 -1.187879 0.058425 0.879526".
Also can these be stored in the form of an excel file or a txt file?
Please help.There are two aspects of the problem.
How do I read a tenv3 data file? The source file can be found here.
I wish to extract the data under the 4th, 9th, 11th, and 13th column, such that the first row of the extracted data should read,
" 54847 -1.187879 0.058425 0.879526".
Also can these be stored in the form of an excel file or a txt file?
Please help. There are two aspects of the problem.
How do I read a tenv3 data file? The source file can be found here.
I wish to extract the data under the 4th, 9th, 11th, and 13th column, such that the first row of the extracted data should read,
" 54847 -1.187879 0.058425 0.879526".
Also can these be stored in the form of an excel file or a txt file?
Please help. data, data import, text file MATLAB Answers — New Questions
can somebody help me to translate this Arduino code to Matlab?
// DECLARACION DE VARIABLES PARA PINES
const int pinecho = 4;
const int pintrigger = 5;
const int pinled = 13;
// Motor A
int IN1 = 8;
int IN2 = 9;
// Motor B
int IN3 = 6;
int IN4 = 7;
int TIempo=0;
// VARIABLES PARA CALCULOS
unsigned int tiempo, distancia;
void setup() {
// PREPARAR LA COMUNICACION SERIAL
Serial.begin(9600);
// CONFIGURAR PINES DE ENTRADA Y SALIDA
pinMode(pinecho, INPUT); % DUDA
pinMode(pintrigger, OUTPUT);
pinMode(13, OUTPUT);
// inicializar la comunicación serial a 9600 bits por segundo:
Serial.begin(9600);
// Declaramos todos los pines como salidas
pinMode (IN1, OUTPUT);
pinMode (IN2, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
}
void loop() {
// ENVIAR PULSO DE DISPARO EN EL PIN "TRIGGER"
digitalWrite(pintrigger, LOW);
delayMicroseconds(2);
digitalWrite(pintrigger, HIGH);
// EL PULSO DURA AL MENOS 10 uS EN ESTADO ALTO
delayMicroseconds(2);
digitalWrite(pintrigger, LOW);
// MEDIR EL TIEMPO EN ESTADO ALTO DEL PIN "ECHO" EL PULSO ES PROPORCIONAL A LA DISTANCIA MEDIDA
tiempo = pulseIn(pinecho, HIGH);
// LA VELOCIDAD DEL SONIDO ES DE 340 M/S O 29 MICROSEGUNDOS POR CENTIMETRO
// DIVIDIMOS EL TIEMPO DEL PULSO ENTRE 58, TIEMPO QUE TARDA RECORRER IDA Y VUELTA UN CENTIMETRO LA ONDA SONORA
distancia = tiempo / 58;
// ENVIAR EL RESULTADO AL MONITOR SERIAL
Serial.print(distancia);
Serial.println(" cm");
delay(150);
// ENCENDER EL LED CUANDO SE CUMPLA CON CIERTA DISTANCIA
if (distancia <= 20) {
digitalWrite(13, HIGH);
delay(300);
} else {
digitalWrite(13, LOW);
//apagar el carro
void frenado ();
if (distancia <=20) {
digitalWrite(13, HIGH);
//Direccion motor A
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
//Direccion motor B
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
}
}
if (Serial.available()) {
char dato= Serial.read();
if(dato==’a’)
{
Adelante();
TIempo=0;
}
else if(dato==’r’)
{
Reversa();
TIempo=0;
}
else if(dato==’d’)
{
Derecha();
TIempo=0;
}
else if(dato==’i’)
{
Izquierda();
TIempo=0;
}
}
if(TIempo<1) // 100 cilcos de 1ms
{
TIempo=TIempo+1;
}
else //ya transcurrió 100ms (100ciclos)
{
Parar();
}
delay(1); //pasusa de 1ms por ciclo
}
void Adelante ()
{
//Direccion motor A
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
//Direccion motor B
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
}
void Parar ()
{
//Direccion motor A
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
//Direccion motor B
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
}
void Derecha ()
{
//Direccion motor A
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
//Direccion motor B
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
}
void Izquierda ()
{
//Direccion motor A
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
//Direccion motor B
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
}
void Reversa ()
{
//Direccion motor A
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
//Direccion motor B
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
}// DECLARACION DE VARIABLES PARA PINES
const int pinecho = 4;
const int pintrigger = 5;
const int pinled = 13;
// Motor A
int IN1 = 8;
int IN2 = 9;
// Motor B
int IN3 = 6;
int IN4 = 7;
int TIempo=0;
// VARIABLES PARA CALCULOS
unsigned int tiempo, distancia;
void setup() {
// PREPARAR LA COMUNICACION SERIAL
Serial.begin(9600);
// CONFIGURAR PINES DE ENTRADA Y SALIDA
pinMode(pinecho, INPUT); % DUDA
pinMode(pintrigger, OUTPUT);
pinMode(13, OUTPUT);
// inicializar la comunicación serial a 9600 bits por segundo:
Serial.begin(9600);
// Declaramos todos los pines como salidas
pinMode (IN1, OUTPUT);
pinMode (IN2, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
}
void loop() {
// ENVIAR PULSO DE DISPARO EN EL PIN "TRIGGER"
digitalWrite(pintrigger, LOW);
delayMicroseconds(2);
digitalWrite(pintrigger, HIGH);
// EL PULSO DURA AL MENOS 10 uS EN ESTADO ALTO
delayMicroseconds(2);
digitalWrite(pintrigger, LOW);
// MEDIR EL TIEMPO EN ESTADO ALTO DEL PIN "ECHO" EL PULSO ES PROPORCIONAL A LA DISTANCIA MEDIDA
tiempo = pulseIn(pinecho, HIGH);
// LA VELOCIDAD DEL SONIDO ES DE 340 M/S O 29 MICROSEGUNDOS POR CENTIMETRO
// DIVIDIMOS EL TIEMPO DEL PULSO ENTRE 58, TIEMPO QUE TARDA RECORRER IDA Y VUELTA UN CENTIMETRO LA ONDA SONORA
distancia = tiempo / 58;
// ENVIAR EL RESULTADO AL MONITOR SERIAL
Serial.print(distancia);
Serial.println(" cm");
delay(150);
// ENCENDER EL LED CUANDO SE CUMPLA CON CIERTA DISTANCIA
if (distancia <= 20) {
digitalWrite(13, HIGH);
delay(300);
} else {
digitalWrite(13, LOW);
//apagar el carro
void frenado ();
if (distancia <=20) {
digitalWrite(13, HIGH);
//Direccion motor A
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
//Direccion motor B
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
}
}
if (Serial.available()) {
char dato= Serial.read();
if(dato==’a’)
{
Adelante();
TIempo=0;
}
else if(dato==’r’)
{
Reversa();
TIempo=0;
}
else if(dato==’d’)
{
Derecha();
TIempo=0;
}
else if(dato==’i’)
{
Izquierda();
TIempo=0;
}
}
if(TIempo<1) // 100 cilcos de 1ms
{
TIempo=TIempo+1;
}
else //ya transcurrió 100ms (100ciclos)
{
Parar();
}
delay(1); //pasusa de 1ms por ciclo
}
void Adelante ()
{
//Direccion motor A
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
//Direccion motor B
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
}
void Parar ()
{
//Direccion motor A
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
//Direccion motor B
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
}
void Derecha ()
{
//Direccion motor A
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
//Direccion motor B
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
}
void Izquierda ()
{
//Direccion motor A
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
//Direccion motor B
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
}
void Reversa ()
{
//Direccion motor A
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
//Direccion motor B
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
} // DECLARACION DE VARIABLES PARA PINES
const int pinecho = 4;
const int pintrigger = 5;
const int pinled = 13;
// Motor A
int IN1 = 8;
int IN2 = 9;
// Motor B
int IN3 = 6;
int IN4 = 7;
int TIempo=0;
// VARIABLES PARA CALCULOS
unsigned int tiempo, distancia;
void setup() {
// PREPARAR LA COMUNICACION SERIAL
Serial.begin(9600);
// CONFIGURAR PINES DE ENTRADA Y SALIDA
pinMode(pinecho, INPUT); % DUDA
pinMode(pintrigger, OUTPUT);
pinMode(13, OUTPUT);
// inicializar la comunicación serial a 9600 bits por segundo:
Serial.begin(9600);
// Declaramos todos los pines como salidas
pinMode (IN1, OUTPUT);
pinMode (IN2, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
}
void loop() {
// ENVIAR PULSO DE DISPARO EN EL PIN "TRIGGER"
digitalWrite(pintrigger, LOW);
delayMicroseconds(2);
digitalWrite(pintrigger, HIGH);
// EL PULSO DURA AL MENOS 10 uS EN ESTADO ALTO
delayMicroseconds(2);
digitalWrite(pintrigger, LOW);
// MEDIR EL TIEMPO EN ESTADO ALTO DEL PIN "ECHO" EL PULSO ES PROPORCIONAL A LA DISTANCIA MEDIDA
tiempo = pulseIn(pinecho, HIGH);
// LA VELOCIDAD DEL SONIDO ES DE 340 M/S O 29 MICROSEGUNDOS POR CENTIMETRO
// DIVIDIMOS EL TIEMPO DEL PULSO ENTRE 58, TIEMPO QUE TARDA RECORRER IDA Y VUELTA UN CENTIMETRO LA ONDA SONORA
distancia = tiempo / 58;
// ENVIAR EL RESULTADO AL MONITOR SERIAL
Serial.print(distancia);
Serial.println(" cm");
delay(150);
// ENCENDER EL LED CUANDO SE CUMPLA CON CIERTA DISTANCIA
if (distancia <= 20) {
digitalWrite(13, HIGH);
delay(300);
} else {
digitalWrite(13, LOW);
//apagar el carro
void frenado ();
if (distancia <=20) {
digitalWrite(13, HIGH);
//Direccion motor A
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
//Direccion motor B
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
}
}
if (Serial.available()) {
char dato= Serial.read();
if(dato==’a’)
{
Adelante();
TIempo=0;
}
else if(dato==’r’)
{
Reversa();
TIempo=0;
}
else if(dato==’d’)
{
Derecha();
TIempo=0;
}
else if(dato==’i’)
{
Izquierda();
TIempo=0;
}
}
if(TIempo<1) // 100 cilcos de 1ms
{
TIempo=TIempo+1;
}
else //ya transcurrió 100ms (100ciclos)
{
Parar();
}
delay(1); //pasusa de 1ms por ciclo
}
void Adelante ()
{
//Direccion motor A
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
//Direccion motor B
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
}
void Parar ()
{
//Direccion motor A
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
//Direccion motor B
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
}
void Derecha ()
{
//Direccion motor A
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
//Direccion motor B
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
}
void Izquierda ()
{
//Direccion motor A
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
//Direccion motor B
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
}
void Reversa ()
{
//Direccion motor A
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
//Direccion motor B
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
} arduino, matlab MATLAB Answers — New Questions
optimization with two-part value range
Dear MATLAB users and MathWorks support team,
I cannot find a solution to represent an optimization problem in MATLAB in which variables in the objective function can take on a two-part value range. The variable in the objective function should correspond to the thermal output of a heat pump in a central heating system. The variable should be able to assume the values 0 (heat pump off) and all values between 100 and 400 (heat pump on with an output between 100 and 400 kW).
x ∈ {0} ∪ [100, 400]
Do you know of a way to implement this condition? I would very much appreciate an answer or the opportunity to discuss this in more detail.Dear MATLAB users and MathWorks support team,
I cannot find a solution to represent an optimization problem in MATLAB in which variables in the objective function can take on a two-part value range. The variable in the objective function should correspond to the thermal output of a heat pump in a central heating system. The variable should be able to assume the values 0 (heat pump off) and all values between 100 and 400 (heat pump on with an output between 100 and 400 kW).
x ∈ {0} ∪ [100, 400]
Do you know of a way to implement this condition? I would very much appreciate an answer or the opportunity to discuss this in more detail. Dear MATLAB users and MathWorks support team,
I cannot find a solution to represent an optimization problem in MATLAB in which variables in the objective function can take on a two-part value range. The variable in the objective function should correspond to the thermal output of a heat pump in a central heating system. The variable should be able to assume the values 0 (heat pump off) and all values between 100 and 400 (heat pump on with an output between 100 and 400 kW).
x ∈ {0} ∪ [100, 400]
Do you know of a way to implement this condition? I would very much appreciate an answer or the opportunity to discuss this in more detail. optimization, minlp, nonlinear optimization, optimization toolbox MATLAB Answers — New Questions
Running code inspector with a For Loop Iterator
Hello,
I have a model running with a For Iterator (to read an Input Array and write some of its datas to another one shorter array).
The model must go through both Model Advisor and Code Inspector to be embedded in the calculator.
As for the Model Advisor everything is passed and generated code is about 120 lines, however when I try to run the code inspector, it runs for more than 2.5hrs (on the inspection only) and I am forced to kill the Matlab task afterward because it stops running. Here is a screenshot of the model.
Here is what I tried:
include the "add" and the "unitDelaty" inside the referenced model => it creates an algebraic loop
add the triggered block within a referenced model => impossible as it contain an "assignement" block and therefore cannot be referenced.
Simplify the referenced model to reduce load capacity of the model containg.
I can provide the generated C code if necessary
Thank you,Hello,
I have a model running with a For Iterator (to read an Input Array and write some of its datas to another one shorter array).
The model must go through both Model Advisor and Code Inspector to be embedded in the calculator.
As for the Model Advisor everything is passed and generated code is about 120 lines, however when I try to run the code inspector, it runs for more than 2.5hrs (on the inspection only) and I am forced to kill the Matlab task afterward because it stops running. Here is a screenshot of the model.
Here is what I tried:
include the "add" and the "unitDelaty" inside the referenced model => it creates an algebraic loop
add the triggered block within a referenced model => impossible as it contain an "assignement" block and therefore cannot be referenced.
Simplify the referenced model to reduce load capacity of the model containg.
I can provide the generated C code if necessary
Thank you, Hello,
I have a model running with a For Iterator (to read an Input Array and write some of its datas to another one shorter array).
The model must go through both Model Advisor and Code Inspector to be embedded in the calculator.
As for the Model Advisor everything is passed and generated code is about 120 lines, however when I try to run the code inspector, it runs for more than 2.5hrs (on the inspection only) and I am forced to kill the Matlab task afterward because it stops running. Here is a screenshot of the model.
Here is what I tried:
include the "add" and the "unitDelaty" inside the referenced model => it creates an algebraic loop
add the triggered block within a referenced model => impossible as it contain an "assignement" block and therefore cannot be referenced.
Simplify the referenced model to reduce load capacity of the model containg.
I can provide the generated C code if necessary
Thank you, simulink, code generation, code inspector MATLAB Answers — New Questions
seek demo px4/PX4HITLSimulationFixedWingPlantSimulinkExample
when i use command openExample(‘px4/PX4HITLSimulationFixedWingPlantSimulinkExample’),matlab shows "PX4HITLSimulationFixedWingPlantSimulinkExample" cannot find. So does somebody know how to find this demo? Thanks.when i use command openExample(‘px4/PX4HITLSimulationFixedWingPlantSimulinkExample’),matlab shows "PX4HITLSimulationFixedWingPlantSimulinkExample" cannot find. So does somebody know how to find this demo? Thanks. when i use command openExample(‘px4/PX4HITLSimulationFixedWingPlantSimulinkExample’),matlab shows "PX4HITLSimulationFixedWingPlantSimulinkExample" cannot find. So does somebody know how to find this demo? Thanks. simulationfixedwingplant, simulink, examles MATLAB Answers — New Questions
How do I clean a test file which size stayed big enough?
I’ve got a test file that was linked to larga data files and now those files were reduced in size. Due to the linkage, the test file size was 1.28gb; the fact is that now that the data files were reduced, the test file carries on with the old size and I cannot find a way to "clean it"I’ve got a test file that was linked to larga data files and now those files were reduced in size. Due to the linkage, the test file size was 1.28gb; the fact is that now that the data files were reduced, the test file carries on with the old size and I cannot find a way to "clean it" I’ve got a test file that was linked to larga data files and now those files were reduced in size. Due to the linkage, the test file size was 1.28gb; the fact is that now that the data files were reduced, the test file carries on with the old size and I cannot find a way to "clean it" test file, testing, size MATLAB Answers — New Questions
Need help with FFT of sensor data
Hello.
For my thesis, I am required to analyse one of the five links of 5 DOF robotic arm. The said link has also been designed in solidworks and was imported in Ansys software to find first 4 natural frequencies/mode shapes through Finite Element Analysis (FEA). The natural frequencies are as follows :
0.05934
188.22
476.19
558.74
Ansys also provides the Displacement Time data which can be exported for further analysis. I am currently trying to obtain a magnitude – frequency graph through FFT to find the natural frequencies of the link through exported data.
My understanding is, if I can recreate the natural frequencies given by Ansys through my MATLAB program, I will be able to find acceptable natural frequencies of any link by aquiring acceleration time data through sensors. But in order to do that, I need a program that finds close to accurate natural frequencies through FFT.
I have made/replicated a program, which is attached, by researching online. However, I am obtaining peaks at incorrect frequencies. Furthermore, my plot does not cover all the frequencies on the X-Axis as well.
Summary : I want to make a program that can give me a Magnitude Frequency graph through FFT for a link of a 5 DOF robotic arm. I want to recreate the results comparable or similar to precalculated and correct values of natural frequencies through my program. However, the results through my program are incorrect.
I am sure I must be doing something wrong but I cannot seem to figure it out.
Would appreciate any and all help.
Cheers.
X=readmatrix(‘accl.xlsx’) %importing data
fs=20; % sampling frequency
L=138; % length of signal
nfft=2^nextpow2(L); % next power of 2 from length of freq signal
f=(fs/2)*linspace(0,1,nfft/2+1);
timefft = fft(X(:,2),nfft)/L;% frf of displacement
fre=2*abs(timefft(1:nfft/2+1));% frf of displacement
figure(1),plot(f,fre); grid on % fig A
% Natural frequencies without any scale adjustment
frf=fft(X(:,2));
figure(2),plot((abs(frf))); % fig BHello.
For my thesis, I am required to analyse one of the five links of 5 DOF robotic arm. The said link has also been designed in solidworks and was imported in Ansys software to find first 4 natural frequencies/mode shapes through Finite Element Analysis (FEA). The natural frequencies are as follows :
0.05934
188.22
476.19
558.74
Ansys also provides the Displacement Time data which can be exported for further analysis. I am currently trying to obtain a magnitude – frequency graph through FFT to find the natural frequencies of the link through exported data.
My understanding is, if I can recreate the natural frequencies given by Ansys through my MATLAB program, I will be able to find acceptable natural frequencies of any link by aquiring acceleration time data through sensors. But in order to do that, I need a program that finds close to accurate natural frequencies through FFT.
I have made/replicated a program, which is attached, by researching online. However, I am obtaining peaks at incorrect frequencies. Furthermore, my plot does not cover all the frequencies on the X-Axis as well.
Summary : I want to make a program that can give me a Magnitude Frequency graph through FFT for a link of a 5 DOF robotic arm. I want to recreate the results comparable or similar to precalculated and correct values of natural frequencies through my program. However, the results through my program are incorrect.
I am sure I must be doing something wrong but I cannot seem to figure it out.
Would appreciate any and all help.
Cheers.
X=readmatrix(‘accl.xlsx’) %importing data
fs=20; % sampling frequency
L=138; % length of signal
nfft=2^nextpow2(L); % next power of 2 from length of freq signal
f=(fs/2)*linspace(0,1,nfft/2+1);
timefft = fft(X(:,2),nfft)/L;% frf of displacement
fre=2*abs(timefft(1:nfft/2+1));% frf of displacement
figure(1),plot(f,fre); grid on % fig A
% Natural frequencies without any scale adjustment
frf=fft(X(:,2));
figure(2),plot((abs(frf))); % fig B Hello.
For my thesis, I am required to analyse one of the five links of 5 DOF robotic arm. The said link has also been designed in solidworks and was imported in Ansys software to find first 4 natural frequencies/mode shapes through Finite Element Analysis (FEA). The natural frequencies are as follows :
0.05934
188.22
476.19
558.74
Ansys also provides the Displacement Time data which can be exported for further analysis. I am currently trying to obtain a magnitude – frequency graph through FFT to find the natural frequencies of the link through exported data.
My understanding is, if I can recreate the natural frequencies given by Ansys through my MATLAB program, I will be able to find acceptable natural frequencies of any link by aquiring acceleration time data through sensors. But in order to do that, I need a program that finds close to accurate natural frequencies through FFT.
I have made/replicated a program, which is attached, by researching online. However, I am obtaining peaks at incorrect frequencies. Furthermore, my plot does not cover all the frequencies on the X-Axis as well.
Summary : I want to make a program that can give me a Magnitude Frequency graph through FFT for a link of a 5 DOF robotic arm. I want to recreate the results comparable or similar to precalculated and correct values of natural frequencies through my program. However, the results through my program are incorrect.
I am sure I must be doing something wrong but I cannot seem to figure it out.
Would appreciate any and all help.
Cheers.
X=readmatrix(‘accl.xlsx’) %importing data
fs=20; % sampling frequency
L=138; % length of signal
nfft=2^nextpow2(L); % next power of 2 from length of freq signal
f=(fs/2)*linspace(0,1,nfft/2+1);
timefft = fft(X(:,2),nfft)/L;% frf of displacement
fre=2*abs(timefft(1:nfft/2+1));% frf of displacement
figure(1),plot(f,fre); grid on % fig A
% Natural frequencies without any scale adjustment
frf=fft(X(:,2));
figure(2),plot((abs(frf))); % fig B natural frequencies, fft, fourier transform MATLAB Answers — New Questions
How to implement Steer by wire system model in simulink
How to implement Steer by wire system model in simulink? Please help me with this.How to implement Steer by wire system model in simulink? Please help me with this. How to implement Steer by wire system model in simulink? Please help me with this. simulink, simulation, steer by wire, model, output MATLAB Answers — New Questions
find all pathbetween 2 node under constraint
hey
i want to find all path between A to B ( start from left buttom)
i have tryed to use meshgrid and allpath command without succses
the constraint are the i can go right or up only
also, i need to write code that calculates the probability on each node to go up or right if given that all route is equal probability
i will appreciate hint how to write my code and which commands to use
here is the meshhey
i want to find all path between A to B ( start from left buttom)
i have tryed to use meshgrid and allpath command without succses
the constraint are the i can go right or up only
also, i need to write code that calculates the probability on each node to go up or right if given that all route is equal probability
i will appreciate hint how to write my code and which commands to use
here is the mesh hey
i want to find all path between A to B ( start from left buttom)
i have tryed to use meshgrid and allpath command without succses
the constraint are the i can go right or up only
also, i need to write code that calculates the probability on each node to go up or right if given that all route is equal probability
i will appreciate hint how to write my code and which commands to use
here is the mesh node, allphath MATLAB Answers — New Questions
Can “pipe(G)” block be used to model forced air convection?
Hello,
i am trying to model a battery pack with forced air convection cooling. The pipe(G) block can be used to transfer heat from gas flowing inside a pipe to intended surface geometry. But it is internal flow. My concern is i want to model heat transfer from the surface to the gas(air). But that will become external flow problem. Is it possible to do so?
please help!
thanks.Hello,
i am trying to model a battery pack with forced air convection cooling. The pipe(G) block can be used to transfer heat from gas flowing inside a pipe to intended surface geometry. But it is internal flow. My concern is i want to model heat transfer from the surface to the gas(air). But that will become external flow problem. Is it possible to do so?
please help!
thanks. Hello,
i am trying to model a battery pack with forced air convection cooling. The pipe(G) block can be used to transfer heat from gas flowing inside a pipe to intended surface geometry. But it is internal flow. My concern is i want to model heat transfer from the surface to the gas(air). But that will become external flow problem. Is it possible to do so?
please help!
thanks. heat transfer, thermal modeling, forced convection MATLAB Answers — New Questions
How can I add a mouse movement listener to a custom ui component?
Hello everyone,
I have created a MatLab app that uses mousemovement events. It uses the WindowButtonMotion callback of the UIFigure that was described here https://nl.mathworks.com/matlabcentral/answers/775147-how-to-create-mouse-movement-event-on-uiaxes-in-app-designer-to-catch-cursor-location-on-the-axes in the answer (Method 2) by Adam Danz
The app works nicely. However, now that the project is evolving, I would like to convert the App to a Custom UI Component. But MatLab components do not seem to include a UIFigure, and therefore no WindowsButtonMotion event/callback. The Custom UI Component itself (comp) and UIAxes do not have a WindowButtonMotion event.
What I would like is a mousemovement event/callback/listener that calls a function so that I can check the mouse position against criteria and take appropriate action. This seems like very common functionality, but I cannot figure out how to accomplish this in a Custom UI Component.
Any ideas?Hello everyone,
I have created a MatLab app that uses mousemovement events. It uses the WindowButtonMotion callback of the UIFigure that was described here https://nl.mathworks.com/matlabcentral/answers/775147-how-to-create-mouse-movement-event-on-uiaxes-in-app-designer-to-catch-cursor-location-on-the-axes in the answer (Method 2) by Adam Danz
The app works nicely. However, now that the project is evolving, I would like to convert the App to a Custom UI Component. But MatLab components do not seem to include a UIFigure, and therefore no WindowsButtonMotion event/callback. The Custom UI Component itself (comp) and UIAxes do not have a WindowButtonMotion event.
What I would like is a mousemovement event/callback/listener that calls a function so that I can check the mouse position against criteria and take appropriate action. This seems like very common functionality, but I cannot figure out how to accomplish this in a Custom UI Component.
Any ideas? Hello everyone,
I have created a MatLab app that uses mousemovement events. It uses the WindowButtonMotion callback of the UIFigure that was described here https://nl.mathworks.com/matlabcentral/answers/775147-how-to-create-mouse-movement-event-on-uiaxes-in-app-designer-to-catch-cursor-location-on-the-axes in the answer (Method 2) by Adam Danz
The app works nicely. However, now that the project is evolving, I would like to convert the App to a Custom UI Component. But MatLab components do not seem to include a UIFigure, and therefore no WindowsButtonMotion event/callback. The Custom UI Component itself (comp) and UIAxes do not have a WindowButtonMotion event.
What I would like is a mousemovement event/callback/listener that calls a function so that I can check the mouse position against criteria and take appropriate action. This seems like very common functionality, but I cannot figure out how to accomplish this in a Custom UI Component.
Any ideas? windowbuttonmotion, custom ui component, app designer MATLAB Answers — New Questions
Conversion of abc unbalanced waveforms to balanced symmetrical components waveforms
I want to convert my three phase unbalanced sinusoidal waveforms to its balanced symmetrical component waveforms. I’m getting phasor(real and imaginary) of symmetrical component waveform but I want the sinusoidal waveform. How can I extract that.
Please help me regarding to this.
Thanking YouI want to convert my three phase unbalanced sinusoidal waveforms to its balanced symmetrical component waveforms. I’m getting phasor(real and imaginary) of symmetrical component waveform but I want the sinusoidal waveform. How can I extract that.
Please help me regarding to this.
Thanking You I want to convert my three phase unbalanced sinusoidal waveforms to its balanced symmetrical component waveforms. I’m getting phasor(real and imaginary) of symmetrical component waveform but I want the sinusoidal waveform. How can I extract that.
Please help me regarding to this.
Thanking You symmetrical components, three phase, unbalanced MATLAB Answers — New Questions
Match Block Sizes in Simulink (2021b)
Does anyone know how to add "Match Size" function in Simulink? I have been using this function a lot since 2013b but I was shocked by not seeing this feature in 2021b. The shortcut for this was Ctlr+A+S. Thanks in advance!Does anyone know how to add "Match Size" function in Simulink? I have been using this function a lot since 2013b but I was shocked by not seeing this feature in 2021b. The shortcut for this was Ctlr+A+S. Thanks in advance! Does anyone know how to add "Match Size" function in Simulink? I have been using this function a lot since 2013b but I was shocked by not seeing this feature in 2021b. The shortcut for this was Ctlr+A+S. Thanks in advance! keyboard shortcuts, simulink, 2021b, modify block diagram appearance MATLAB Answers — New Questions
How can I optimize the the code below which assigns grey-scale color values to a color array from pixels in an image?
Hi!
I am trying to optimise the code below, which is the only part of a program i have made which uses for loops, and as such is fairly time consuming.
The program essentially uses two cameras, with their positions calibrated and defined relative to the position of an object they are imaging. The object is created in the virtual space by importing it as a point cloud and converting this to a triangulated surface. The code uses information about the normal vector to each triangle on the surface to figure out whether each camera can actually "see" that point on the object in the real world, and then uses the relevant pixel data for that point (each point is mapped onto the image to find out which pixel refers to it) to assign the correct colour value to the color array for the point cloud.
Any advice would be appreciated, I’m fairly new to matlab and definitely new to the concept of eliminating for loops and code optimisation.
If i haven’t explained the code clearly enough please let me know.
Thanks,
Toby
%Assign color to points if the surface faces towards the relevant camera
for m=1:numberoffaces
camera1vector=locationcamera1-P(m,:);
camera2vector=locationcamera2-P(m,:);
if (dot(camera1vector,F(m,:)))<0
colors(m)= imageGL(pixelposition1(m,2),pixelposition1(m,1));
colors(m)= imageGL(pixelposition1(m,2),pixelposition1(m,1));
colors(m)= imageGL(pixelposition1(m,2),pixelposition1(m,1));
elseif (dot(camera2vector,F(m,:)))<0
colors(m)= imageGR(pixelposition2(m,2),pixelposition2(m,1));
colors(m)= imageGR(pixelposition2(m,2),pixelposition2(m,1));
colors(m)= imageGR(pixelposition2(m,2),pixelposition2(m,1));
else
colors(m)= (0);
colors(m)= (0);
colors(m)= (0);
end
endHi!
I am trying to optimise the code below, which is the only part of a program i have made which uses for loops, and as such is fairly time consuming.
The program essentially uses two cameras, with their positions calibrated and defined relative to the position of an object they are imaging. The object is created in the virtual space by importing it as a point cloud and converting this to a triangulated surface. The code uses information about the normal vector to each triangle on the surface to figure out whether each camera can actually "see" that point on the object in the real world, and then uses the relevant pixel data for that point (each point is mapped onto the image to find out which pixel refers to it) to assign the correct colour value to the color array for the point cloud.
Any advice would be appreciated, I’m fairly new to matlab and definitely new to the concept of eliminating for loops and code optimisation.
If i haven’t explained the code clearly enough please let me know.
Thanks,
Toby
%Assign color to points if the surface faces towards the relevant camera
for m=1:numberoffaces
camera1vector=locationcamera1-P(m,:);
camera2vector=locationcamera2-P(m,:);
if (dot(camera1vector,F(m,:)))<0
colors(m)= imageGL(pixelposition1(m,2),pixelposition1(m,1));
colors(m)= imageGL(pixelposition1(m,2),pixelposition1(m,1));
colors(m)= imageGL(pixelposition1(m,2),pixelposition1(m,1));
elseif (dot(camera2vector,F(m,:)))<0
colors(m)= imageGR(pixelposition2(m,2),pixelposition2(m,1));
colors(m)= imageGR(pixelposition2(m,2),pixelposition2(m,1));
colors(m)= imageGR(pixelposition2(m,2),pixelposition2(m,1));
else
colors(m)= (0);
colors(m)= (0);
colors(m)= (0);
end
end Hi!
I am trying to optimise the code below, which is the only part of a program i have made which uses for loops, and as such is fairly time consuming.
The program essentially uses two cameras, with their positions calibrated and defined relative to the position of an object they are imaging. The object is created in the virtual space by importing it as a point cloud and converting this to a triangulated surface. The code uses information about the normal vector to each triangle on the surface to figure out whether each camera can actually "see" that point on the object in the real world, and then uses the relevant pixel data for that point (each point is mapped onto the image to find out which pixel refers to it) to assign the correct colour value to the color array for the point cloud.
Any advice would be appreciated, I’m fairly new to matlab and definitely new to the concept of eliminating for loops and code optimisation.
If i haven’t explained the code clearly enough please let me know.
Thanks,
Toby
%Assign color to points if the surface faces towards the relevant camera
for m=1:numberoffaces
camera1vector=locationcamera1-P(m,:);
camera2vector=locationcamera2-P(m,:);
if (dot(camera1vector,F(m,:)))<0
colors(m)= imageGL(pixelposition1(m,2),pixelposition1(m,1));
colors(m)= imageGL(pixelposition1(m,2),pixelposition1(m,1));
colors(m)= imageGL(pixelposition1(m,2),pixelposition1(m,1));
elseif (dot(camera2vector,F(m,:)))<0
colors(m)= imageGR(pixelposition2(m,2),pixelposition2(m,1));
colors(m)= imageGR(pixelposition2(m,2),pixelposition2(m,1));
colors(m)= imageGR(pixelposition2(m,2),pixelposition2(m,1));
else
colors(m)= (0);
colors(m)= (0);
colors(m)= (0);
end
end point cloud, for loop, for, performance, optimization, calibration, colormap, image processing, stereo imaging MATLAB Answers — New Questions