3D array arithmetic. (3Dx-1 Element)
Hello everyone,
I have a quick question which I have yet to find the answer for anywhere else.
I have a 3 dimensional array that contains one element per dimension. I want to be able to square these elements then add them together. I have accomplished the squaring by using the polymorphic functionality of the square function. Now I want to add all 3 elements ( one element per dimension) into one scalar type. Does anyone know how to do this?
Thanks,
Cheers!
Learning is living.
Co-Founder and CEO of http://3dprintingmodel.com/
"If we did all the things we are capable of, we would literally astound ourselves."
-Thomas Edison
Solved!
Go to Solution.
Thanks Darin! Very helpful. I can not believe I missed that before.
I apologize for the crude explanation before. I was wrong, the proper way to describe this would be a 3D "1 X 1 X 1" array.
I have been programming for about a year in LabVIEW. Unfortunately, this year of programming have been very specific up until now, and with no formal training I tend to skip, or overthink problems like these. (Even though there is a built in function)
Thanks for the help.
Have a great day.
Learning is living.
Co-Founder and CEO of http://3dprintingmodel.com/
"If we did all the things we are capable of, we would literally astound ourselves."
-Thomas Edison
Similar Messages
-
Javascript array ;Add and remove elements without using push and pop
Hi
I need to perform add and remove operation in Javascript with following scenarios
i) Add element, if element does not exist in array(javascript)
ii) Remove element, if element exist in array(javascript)
Without using push and pop method how to achieve this?
Regards
SivaCompleted the Scenario.
-
Excel allows array arithmetic (e.g. sum{(a1:a5* b1:b5)} where the contents of the cells are the results of formulae. Numbers only allows constants in the array cells. Right? Any work-arounds?
CJPerry wrote:
Any work-arounds?
There is a very simple one : use libreOffice.
Yvan KOENIG (VALLAURIS, France) dimanche 1 janvier 2012
iMac 21”5, i7, 2.8 GHz, 12 Gbytes, 1 Tbytes, mac OS X 10.6.8 and 10.7.2
My iDisk is : http://public.me.com/koenigyvan
Please : Search for questions similar to your own before submitting them to the community
For iWork's applications dedicated to iOS, go to :
https://discussions.apple.com/community/app_store/iwork_for_ios -
Crash when use indexe array with in place element structure
Hello !
I have a problem with in place element structure. I want index a waveform array (16 elements) and when i execute or save that labview close....
I dont have problem with waveform array 15 elements or less, but i need index 16 elements...
Thanks for your help !!!
Solved!
Go to Solution.
Attachments:
Test.PNG 8 KBI give you my code but it work because i used a waveform array with only 15 elements. I can't save or execute with 16 elements...
So add it (like picture Test.png) and you will see.
Thank you
Attachments:
Test.vi 25 KB -
Is it possible for an Array to have zero element??
As the subject stated, is it possible for an Array to have zero element apart from being null??
because if I dont assign an Array to any amount of elements, the Array is always null. And, that is the reason why I never see Array.length being zero.
Any body can explain??As the subject stated, is it possible for an Array to
have zero element apart from being null??Well, let's see. new int[1] creates an array with one element, so if it IS possible to have an array with zero elements, how do you suppose you'd do that?
Okay, right.
Now, what happened when you put that into a .java file and compiled it?
because if I dont assign an Array to any amount of
elements, the Array is always null.If you don't assign a reference to an array to your array variable, (i.e. myArr = ... then it will be null (if it's a member variable, but undefined if it's a local).
But null and empty are not the same thing. Remember, there's your variable, and there's the array it points to.
Why do you think that the array it points to must have >= 1 elements?
I'm not saying it's okay to have zero elemnts. And I'm not saying it's not.
I'm asking you to examine your logic for why you think zero elements is not possible (said logic is faulty). And then I'm asking you to do an experiment to test your theory.
And, that is the
reason why I never see Array.length being zero.If you never see array.length being zero, it's because none of the arrays you looked at had zero elments. That doesn't tell you that arrays can't have zero elements.
So far, you have neither theory nor observations to support either view. -
Lots of blank space when printing array with only last element printed
I have a slight problem I have been trying to figure it out for days but can't see where my problem is, its probably staring me in the face but just can't seem to see it.
I am trying to print out my 2 dimensional array outdie my try block. Inside the trying block I have two for loops in for the arrays. Within the second for loop I have a while to put token from Stringtokeniser into my 2 arrays. When I print my arrays in this while bit it prints fine however when I print outside the try block it only print the last element and lots of blank space before the element.
Below is the code, hope you guys can see the problem. Thank you in advance
import java.io.*;
import java.net.*;
import java.lang.*;
import java.util.*;
import javax.swing.*;
public class javaflights4
public static final String MESSAGE_SEPERATOR = "#";
public static final String MESSAGE_SEPERATOR1 = "*";
public static void main(String[] args) throws IOException
String data = null;
File file;
BufferedReader reader = null;
file = new File("datafile.txt");
String flights[] [];
//String flightdata[];
flights = new String[21][7];
int x = 0;
//flightdata = new String[7];
int y = 0;
try
reader = new BufferedReader(new FileReader(file));
//data = reader.readLine();
while((data = reader.readLine())!= null)
data.trim();
StringTokenizer tokenised = new StringTokenizer(data, MESSAGE_SEPERATOR1);
for(x = 0; x<=flights.length; x++)
for(y = 0; y<=flights.length; y++)
while(tokenised.hasMoreTokens())
//System.out.println(tokenised.nextToken());
flights [x] [y] = tokenised.nextToken();
//System.out.print("*"+ flights [x] [y]+"&");
System.out.println();
catch(ArrayIndexOutOfBoundsException e1)
System.out.println("error at " + e1);
catch(Exception e)
finally
try
reader.close();
catch(Exception e)
int i = 0;
int j = 0;
System.out.print(flights [j]);
//System.out.println();A number of problems.
First, I bet you see a lot of "error at" messages, don't you? You create a 21x7 array, then go through the first array up to 21, going through the second one all the way to 21 as well.
your second for loop should go to flights[x].length, not flights.length. That will eliminate the need for ArrayIndexOutOfBounds checking, which should have been an indication that you were doing something wrong.
Second, when you get to flights[0][0] (the very first iteration of the inner loop) you are taking every element from the StringTokenizer and setting flights[0][0] to each, thereby overwriting the previous one. There will be nothing in the StringTokenizer left for any of the other (21x7)-1=146 array elements. At the end of all the loops, the very first element in the array (flights[0][0]) should contain the last token in the file.
At the end, you only print the first element (i=0, j=0, println(flight[ i][j])) which explains why you see the last element from the file.
I'm assuming you have a file with 21 lines, each of which has 7 items on the line. Here is some pseudo-code to help you out:
count the lines
reset the file
create a 2d array with the first dimension set to the number of lines.
int i = 0;
while (read a line) {
Tokenize the line;
count the tokens;
create an array whose size is the number of tokens;
stuff the tokens into the array;
set flights[i++] to this array;
} -
Show vertical scrollbar when 1D array only shows one element
When showing only one element of one dimensional array, only the horizontal scrollbar can be displayed. The vertical scrollbar visible option is greyed out. Even using property nodes does not make it visible. I have an array of clusters with many controls in each cluster that are aranged hozizontally across the front panel. I'd like the user to see only one element (one set of controls) at a time and be able to scroll through them using a vertical scollbar.
I think Brent's suggestion is very good. Another hack would be to cover the additional array elements with a decoration so that you only see one element.
Message Edited by vt92 on 04-21-2009 09:58 AM
"There is a God shaped vacuum in the heart of every man which cannot be filled by any created thing, but only by God, the Creator, made known through Jesus." - Blaise Pascal
Attachments:
need to scroll.PNG 14 KB -
MSGraph maximum array size is 3999 elements
I just spent a couple of hours debugging and it seems that 2D array size in MSGraph cannot exceed 3999 elements. I am using MS Office 11 beta2 and office reporting toolkit. Some of my data sets were larger than 3999 and I was getting cryptic error messages. NI search did not yield any additional info so I am posting this for future searches. NI could have added some error checking if this really a case.
Any ideas on how to easily plot arrays larger than that.
Thanks
RKI have never used MSGraph, but I recently used Excel 2000 to graph a chart that was 10000 by 3. This should solve your problem (unless, of course, I have misunderstood it--let me know).
Sean -
Help get the array number fo a element
Hi
1. This program does the following: Ask for three numbers, print them in a row and show the largest number of the three.
2. I also would like the program to: Print out the position of the array, whre the largest number is. Please give me a hint where to begin.
import java.util.*;
public class Ovning5 {
public static void main (String [] arg) {
Scanner scan = new Scanner (System.in);
int [] numbers = new int [3]; // New array
int x; // Numbers in array
int largestNumber; // Largest number in the array
// Ask for numbers
System.out.print("Put in (three) numbers");
for (x=0; x<numbers.length; x++) {
numbers[x]=scan.nextInt ();
// Print numbers in a row
for (x=0; x<numbers.length; x++) {
System.out.print (numbers[x]+ " ");
// Put a new line before next function
System.out.println (); {
// Find the largest number
largestNumber = 0; // Set the highest number to 0
for (x=0; x<numbers.length; x++) { // Use the first number in the array.
if (x == 0) {
largestNumber = numbers[0];
// if the current number we're
// looking at in the array is bigger than the highest number,
// set the highest number to this current number
if (numbers[x] > largestNumber) {
largestNumber = numbers[x];
} // Close new line function
// Print out the largest number
System.out.println("The biggest number is " + largestNumber);
}"As you iterate over the array, looking for the largest element, keep track of the index of the largest element as well as it's value. Whenever you set the largest to array[n], also store n."
It took a while to figure out, but it is something like this you meen :)
// Find the largest number and the position in the array
largestNumber = 0; // Set the highest number to 0
for (x=0; x<numbers.length; x++) { // Use the first number in the array.
if (x == 0) {
largestNumber = numbers[0];
// if the current number we're
// looking at in the array is bigger than the highest number,
// set the highest number to this current number
if (numbers[x] > largestNumber) {
largestNumber = numbers[x];
y=x; // Since we look at all the numbers in the loop
// and we started from zero, y is going to be compared to xDo you think my comments make sense? -
My array is erroneously adding elements (help!!!)
I have an array of clusters that I am using as a list of commands.
1. I run the program and bring the Edit Tab to the front.
2. I add several new elements by giving values to the servo (first on left).
3. Once I have several elements in, I increase the index to scroll them up.
4. When I do this, new elements are added to my array.
I can't find any reason for this in my code. Hope someone else can help me figure out the problem.
I have attached the code (LabVIEW 7.1.1)
Randall Pursley
Attachments:
Main.llb 231 KBThe bluish line in the array indicated that a "selection" (for copying or deleting, etc.) has been made. With the arrow tool right click on the arrays index, select "Advanced" and "show selection" will be checked. Haven't figured out what effect that might have though.
Putnam Monroe
Putnam
Certified LabVIEW Developer
Senior Test Engineer
Currently using LV 6.1-LabVIEW 2012, RT8.5
LabVIEW Champion -
Comparing an element of an array with the previous element in that array.
First post, please let me know if there's anything I should do differently.
I'm grabbing a scope measurement in the form of a triangle waveform, and want only the parts of it with a positive differential - essentially a sawtooth. The waveform is stored in a one-dimensional array. Also, there is no way for me to trigger the measurement, so there is likely an incomplete bit of waveform before the first lowest value.
To prepare the data I decided to do two things:
-Cycle through the array and delete everything until I find the first lowest value.
-Save the values from lowest to highest, then delete everything until the next lowest value. Do this n times.
Does anyone have any good examples of cycling through an array in such a manner, or is there simply an easier way of going about it?Thank you very much for the response!
Unfortunately I don't have any code to post at the moment, but you can assume the input would be an array of voltage values that comprise a triangle wave. Good suggestion about the array min/max function, however I forsee a potential issue with it.
It's possible that the triangle wave won't be 'perfect.' That is, the voltage of one peak or valley might not be exactly identical as measured from one to the other. It would be really nice if I could count on them to be identical, then I could min/max and just search for the min and max values. If I min/max, it's possible I could come up with a point at the middle or end of my waveform and lose useful data before it. There are two likely scenarios for the start of the waveform, so...
-We start on the downward slope of the triangle wave somewhere in the middle of it.
if array[x+1] is less than array[x], delete array[x]. If it's not, exit the loop.
-We start on the upward slope of the triangle wave somewhere in the middle of it.
This one is tougher. I could use Min/Max and make the determination based on how close to the min value we are within some margin of error.
-We could start exactly on the peak or valley of the triangle, but this is very unlikely with the number of measurements taken.
Is there a min/max that would allow for some margin of error? -
How can I order the elements in an array from the smallest element to the biggest?
For example: I want to convert a 1D array like [4,1,2,3] to a 1D array like [1,2,3,4]. How can I do that?
Sorry for the question but I am a beginner.
Thanks for the answers.
Solved!
Go to Solution.Go to the array palette; there is a Sort function node.
Adnan Zafar
Certified LabVIEW Architect
Coleman Technologies -
Please help - I can not create large arrays of images (no more than 108 elements)
Hello,
I am working in an application where i acquire 300 high resolution images (3Mp) and then i process each of those frames.
When i try to put alll those frames in one array of images, the system does not let me more than 108 elements. There is no such message like out of memory or memory error. It is just that when i visualize the array of images, there are good frames the first 108 elements, and then white frames the rest of the elements.
Ideallically i would prefer to process frames as i am acquiring them, but i am concerned about the remaining processing time for the rest of the tasks.
Then, as an alternative, I have tried to store frames in two shorter arrays, and i ended up observing that when the first array (say 50 elements) is full and the second array starts (another 50 elements for example), labview needs a certain time in the the middle (like three seconds between closing first array and starting acquiring on the second array). If i dont wait that time between arrays, both arrays contain the same information. I know, this is weird, and i know about the fact of passing information by reference on imaq images.
The most interesting thing is that when i reduce considerably the resolution of the image (say that now, instead 3Mp they are 2Mp), the maximum number of elements on the arrays are exactly the same: 108, so this makes me wonder if it is a memory constrain. And the code is fairly simple, there is no way that i am cutting the acquisition at the number 108.
So my question is, How can i put 300 frames in one just one array? or How can eliminate the time i have to wait between arrays?
I have heard about memory allocation and so, but i am not sure how to proceed. I have windows 7.
Thanks in advance,
RobertoIt's hard to visualize. Please post the code - or at least a shell representing your code - so we can see what is happening. Are you sure you are getting 108 contiguous pictures, or are some aquisitions being skipped? Is the first picture in the array the first aqcuisition? Is the last picture the last acquisition?
I really don't think it is about memory allocation. I think it could be about your method of acquiring and processing said acquisitions.
Bill
(Mid-Level minion.)
My support system ensures that I don't look totally incompetent.
Proud to say that I've progressed beyond knowing just enough to be dangerous. I now know enough to know that I have no clue about anything at all. -
Search and replace elements in a 2D Array
Hello,
i have a programming problem in Labview 7.1 under Win XP. I want replace elements in a 2D Array. The code works fine but I want replace elements in the 2D Array (for example all elements between 2 and 5 should replace to zero).
Thank you in advance
Rene
Attachments:
Search_and_replace 2D Array.vi 42 KBSometimes, you don't need any loops
Note to Devchander:
You can configure the "In Range and Coerce" finction to either exclude or include the limits. This is done by right-clicking on their respecive terminal. Try it! The terminal will be either a solid or open diamond, depending on configuration.
Message Edited by altenbach on 01-11-2006 07:59 AM
LabVIEW Champion . Do more with less code and in less time .
Attachments:
Search_and_replace_2D_ArrayMOD.vi 24 KB
SearchReplace2D.png 3 KB -
Store XML node value into an array with node element name
Hi,
I have the following code that displays the node element with the
corresponding node value. I want to store the values in an array in
reference to the node name.
i.e.
XML (my xml is much bigger than this, 300 elements):
<stock>
<symbol>SUNW</symbol>
<price>17.1</price>
</stock>-----
would store the following:
*data[symbol] = SUNW;*
*data[price] = 17.1;*
Thanks in advance,
Tony
test.jsp
Here's my source code:
<html>
<head>
<title>dom parser</title>
<%@ page import="javax.xml.parsers.*" %>
<%@ page import="org.w3c.dom.*" %>
<%@ page import="dombean.*" %>
</head>
<body bgcolor="#ffffcc">
<center>
<h3>Pathways Info</h3>
<table border="2" width="50%">
<jsp:useBean id="domparser" class="dombean.MyDomParserBean" />
<%
Document doc = domparser.getDocument("c:/stocks/stocks.xml");
traverseTree(doc, out);
%>
<%! private void traverseTree(Node node,JspWriter out) throws Exception {
if(node == null) {
return;
int type = node.getNodeType();
switch (type) {
// handle document nodes
case Node.DOCUMENT_NODE: {
out.println("<tr>");
traverseTree
(((Document)node).getDocumentElement(),
out);
break;
// handle element nodes
case Node.ELEMENT_NODE: {
String elementName = node.getNodeName();
//if(elementName.equals("MOTHER-OCC-YRS-PREVIOUS")) {
//out.println("</tr>");
out.println("<tr><td>"+elementName+"</td>");
NodeList childNodes =
node.getChildNodes();
if(childNodes != null) {
int length = childNodes.getLength();
for (int loopIndex = 0; loopIndex <
length ; loopIndex++)
traverseTree
(childNodes.item(loopIndex),out);
break;
// handle text nodes
case Node.TEXT_NODE: {
String data = node.getNodeValue().trim();
//if((data.indexOf("\n") <0) && (data.length() > 0)) {
out.println("<td>"+data+"</td></tr>");
%>
</table>
</body>
</html>
{code}
*MyDomParserBean.java*
Code: package dombean;
{code:java}
import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.*;
public class MyDomParserBean
implements java.io.Serializable {
public MyDomParserBean() {
public static Document
getDocument(String file) throws Exception {
// Step 1: create a DocumentBuilderFactory
DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
// Step 2: create a DocumentBuilder
DocumentBuilder db = dbf.newDocumentBuilder();
// Step 3: parse the input file to get a Document object
Document doc = db.parse(new File(file));
return doc;
{code}
Edited by: ynotlim333 on Sep 24, 2007 8:41 PM
Edited by: ynotlim333 on Sep 24, 2007 8:44 PM
Edited by: ynotlim333 on Sep 24, 2007 8:45 PMI still need to store it in an array because its 300 elements in the XML stocks.
I've done the following but its not working, i'm getting error codes. I think its an easy fix. I'd also like to pass a String instead of a .xml document b/c my xml is stored inside a DB. Any suggestions on that?
<html>
<head>
<title>dom parser</title>
<%@ page import="javax.xml.parsers.*" %>
<%@ page import="org.w3c.dom.*" %>
<%@ page import="org.*" %>
</head>
<body bgcolor="#ffffcc">
<center>
<h3>Pathways Info</h3>
<table border="2" width="50%">
<jsp:useBean id="domparser" class="org.MyDomParserBean" />
<%
Document doc = domparser.getDocument("c:/stocks/stocks.xml");
traverseTree(doc, out);
%>
<%!
public String element_store = null;
public String[] stock_data = new String[400];
private void traverseTree(Node node,JspWriter out) throws Exception {
if(node == null) {
return;
int type = node.getNodeType();
switch (type) {
// handle document nodes
case Node.DOCUMENT_NODE: {
out.println("<tr>");
traverseTree
(((Document)node).getDocumentElement(),
out);
break;
// handle element nodes
case Node.ELEMENT_NODE: {
String elementName = node.getNodeName();
element_store = elementName;
//if(elementName.equals("MOTHER-OCC-YRS-PREVIOUS")) {
//out.println("</tr>");
NodeList childNodes =
node.getChildNodes();
if(childNodes != null) {
int length = childNodes.getLength();
for (int loopIndex = 0; loopIndex <
length ; loopIndex++)
traverseTree
(childNodes.item(loopIndex),out);
break;
// handle text nodes
case Node.TEXT_NODE: {
String data = node.getNodeValue().trim();
if((data.indexOf("\n") <0) && (data.length() > 0)) {
out.println("<tr><td>"+element_store+"</td>");
out.println("<td>"+data+"</td></tr>");
stock_data[element_store]=data;
%>
</table>
</body>
</html>
Maybe you are looking for
-
Broad casting Webi report in excel format to different users email ids
Hello, Seriously looking for the help, please help with the solution for below scenario. We have a requirement to schedule broadcasting of Webi reports to users email in excel format from infoview. But our concern is how the system takes care of auth
-
How to save User input into DB using webdynpro abap
Hi, Im trying to create an application using webdynpro abap. I want to know how to save the data input by user, into a database table. In my UI, I have a table control which is editable and user inputs data into this. I need to know how i can transfe
-
Problem connecting Oracle 9i Lite to Oracle 9i Database
Hi, I have just started working with Oracle 9i Lite and I am having problems connecting to an Oracle 9i (9.0.1) database using the packaging wizard. I can connect ok using SQL*Plus but when I connect using this wizard the database is located i.e. no
-
How do you properly eport anamorphic 16:9
I have a canon gl2 and I can capture anamorphic 16:9 fine but whenever I export it doesen't seem to do it properly. It is as if the video is 16:9 but it letterboxed at the sides. Any advice?
-
All kinds of "redirect" tabs show up and seem to slow up acces to and the operation of the sites that I want to get to. A lot of ads warning that my system need a product that the advertisers want to sell me.