Extrapolation and intersection

I have a list of 10 points ( Voltage=f(Current) ) measured by
multimeters. I interpolated them with linear fit.vi.  Now I have
to extrapolate this line to find the offset of current and voltage. How is this possible with labview?

Linear fit.vi returns Slope and Intercept. With those you can evaluate the equation of the line (y = m*x+b) to find what you want. The Intercept value itself may be the offset you are looking for.
Lynn

Similar Messages

  • Anchor Points and Intersect Guide Lines Disappeared

    Hi! I must have hit some type of command on my keyboard but now my anchor points and intersect guides have disappeared that would normally appear when I roll my mouse over the anchor point or the intersecting paths. I have hit Ctrl + H as well as went to the menu manually and my edges are showing. How do I turn back on this ability to see my anchor points and intersecting lines guide in Illustrator?
    Thanks in advance!!
    Edit: I run on Adobe Illustrator CS5

    Is View > Smart Guides turned on? If not, enable it.
    If Smart Guides are already turned on, check if Align to Grid is enabled in the View menu and turn it off.

  • Using EXCEPT and INTERSECT (Transact-SQL) with a Twist

    I understand how to use EXCEPT and INTERSECT BUT how Do use it with two different servers?  I have the production database on server1, the conversion database on server2. The databases are identical EXCEPT there is more (new) data in CONVERSION.
    I want one query that properly coded returns the differences between production and conversion. I expect to run EXCEPT first (PRODUCTION on left, CONVERSION on right), then I will run INTERSECT (PRODUCTION on left, CONVERSION on right).
    How do I get the full network path: SERVER/DATABASE/TABLE?
    USE SERVERNAME1.PRODUCTION;
    SELECT person_id
    ,person_name
    FROM person_detail AS x
    USE SERVERNAME2.CONVERSION;
    SELECT person_id
    ,person_name
    FROM person AS y
    GO
    SELECT *
    FROM x
    EXCEPT
    SELECT *
    FROM y;

    Hi,
    You can use
    OPENROWSET to get the data from the remote server and then you can use simple EXCEPT and INTERSECT as you already know
    Something like:
    SELECT ProductID FROM Production.Product
    INTERSECT
    SELECT ProductID
    FROM OPENROWSET(
    'SQLNCLI',
    'Use your connection string here to the remote server',
    'SELECT ProductID FROM Production.WorkOrder ;'
      Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]

  • Add selection as add and intersect commands combined

    Hello, I want to add selection to a selection so it acts as the two commands combined: add command and intersect command. Where parts of a selection intersect i want to act it as the add command - it simply adds selection to a selection. Where it does not intersect, i want it to act as the intersect command - it deletes the part of the selection that doesnt intersect. Can this be scripted?

    By the way: The Script would only provide the expected result if the second Selection is one contiguous area.
    Edit: This should also handle discontinuous segments for the second Selection.
    // store selection on first run, on second run add overlapping parts of the sstored selection to the new selection;
    // 2014, use at your own risk;
    #target photoshop
    if (app.documents.length > 0) {
    activeDocument.suspendHistory("something with selections", "main()");
    ////// the stuff //////
    function main () {
    var myDocument = app.activeDocument;
    var theChannelName = "removeThisChannelLaterOn";
    if (hasSelection() == true) {
    // if channel exists;
    try {
    var theChannel = myDocument.channels.getByName(theChannelName);
    // store the selection;
    var theOtherChannel = myDocument.channels.add();
    myDocument.selection.store(theOtherChannel);
    theOtherChannel.name = theChannelName+"Too";
    // fill;
    myDocument.activeChannels = [theChannel];
    var theColor = new SolidColor();
    theColor.rgb.red = 255;
    theColor.rgb.green = 255;
    theColor.rgb.blue = 255;
    myDocument.selection.fill(theColor);
    // get path information;
    var path1 = workPathFromChannel (myDocument, theChannel);
    var path2 = workPathFromChannel (myDocument, theOtherChannel);
    // check for identical point;
    var theCheck = checkForIdenticalPoints (path1, path2);
    if (theCheck != false) {
    var thePath = createPath2012(theCheck, "removeThisPathLaterOn");
    // load;
    thePath.makeSelection(0, false, SelectionType.REPLACE);
    myDocument.selection.expand(1);
    myDocument.selection.load(theChannel, SelectionType.INTERSECT, false)
    // clean up;
    thePath.remove();
    // clean up;
    theChannel.remove();
    theOtherChannel.remove();
    // if channel does not exist;
    catch (e) {
    // store the selection;
    var theMask = myDocument.channels.add();
    myDocument.selection.store(theMask);
    theMask.name = theChannelName;
    compositeChannels ();
    showChannel (theChannelName);
    myDocument.selection.deselect();
    ////// get work path  info from channel //////
    function workPathFromChannel (myDocument, theChannel) {
    // load;
    myDocument.selection.load(theChannel, SelectionType.REPLACE);
    // use threshold to heighten non black pixels;
    myDocument.quickMaskMode = true;
    myDocument.activeLayer.threshold(1);
    myDocument.quickMaskMode = false;
    // create work path;
    // =======================================================
    var idMk = charIDToTypeID( "Mk  " );
        var desc16 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
            var ref12 = new ActionReference();
            var idPath = charIDToTypeID( "Path" );
            ref12.putClass( idPath );
        desc16.putReference( idnull, ref12 );
        var idFrom = charIDToTypeID( "From" );
            var ref13 = new ActionReference();
            var idcsel = charIDToTypeID( "csel" );
            var idfsel = charIDToTypeID( "fsel" );
            ref13.putProperty( idcsel, idfsel );
        desc16.putReference( idFrom, ref13 );
        var idTlrn = charIDToTypeID( "Tlrn" );
        var idPxl = charIDToTypeID( "#Pxl" );
        desc16.putUnitDouble( idTlrn, idPxl, 1.000000 );
    executeAction( idMk, desc16, DialogModes.NO );
    // get information;
    var theArray = collectPathInfoFromDesc2012 (myDocument, myDocument.pathItems[myDocument.pathItems.length - 1]);
    return theArray
    ////// check for selection //////
    function hasSelection(){
    var ref10 = new ActionReference();
    ref10.putEnumerated( charIDToTypeID( "Dcmn" ), charIDToTypeID( "Ordn" ), charIDToTypeID( "Trgt" ) );
    var docDesc = executeActionGet(ref10);
    return docDesc.hasKey(stringIDToTypeID("selection"));
    ////// go to composite channels //////
    function compositeChannels () {
    // =======================================================
    var idslct = charIDToTypeID( "slct" );
        var desc2 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
            var ref2 = new ActionReference();
            var idChnl = charIDToTypeID( "Chnl" );
            var idChnl = charIDToTypeID( "Chnl" ); 
    switch (activeDocument.mode) {
        case DocumentMode.RGB:
            var idComposite = charIDToTypeID( "RGB " );
            break;
        case DocumentMode.CMYK:
            var idComposite = charIDToTypeID( "CMYK" );
            break;
        case DocumentMode.LAB:
            var idComposite = charIDToTypeID( "Lab " );
            break;
        case DocumentMode.GRAYSCALE:
            var idComposite = charIDToTypeID( "Blck" );
            break;
            ref2.putEnumerated( idChnl, idChnl, idComposite );
        desc2.putReference( idnull, ref2 );
    executeAction( idslct, desc2, DialogModes.NO );
    ////// chow channel of name //////
    function showChannel (theName) {
    // =======================================================
    var idShw = charIDToTypeID( "Shw " );
        var desc3 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
            var list1 = new ActionList();
                var ref3 = new ActionReference();
                var idChnl = charIDToTypeID( "Chnl" );
                ref3.putName( idChnl, theName );
            list1.putReference( ref3 );
        desc3.putList( idnull, list1 );
    executeAction( idShw, desc3, DialogModes.NO );
    ////// collect path info from actiondescriptor, smooth added //////
    function collectPathInfoFromDesc2012 (myDocument, thePath) {
    var originalRulerUnits = app.preferences.rulerUnits;
    app.preferences.rulerUnits = Units.POINTS;
    // based of functions from xbytor’s stdlib;
    var ref = new ActionReference();
    for (var l = 0; l < myDocument.pathItems.length; l++) {
      var thisPath = myDocument.pathItems[l];
      if (thisPath == thePath && thisPath.name == "Work Path") {
      ref.putProperty(cTID("Path"), cTID("WrPt"));
      if (thisPath == thePath && thisPath.name != "Work Path" && thisPath.kind != PathKind.VECTORMASK) {
      ref.putIndex(cTID("Path"), l + 1);
      if (thisPath == thePath && thisPath.kind == PathKind.VECTORMASK) {
            var idPath = charIDToTypeID( "Path" );
            var idPath = charIDToTypeID( "Path" );
            var idvectorMask = stringIDToTypeID( "vectorMask" );
            ref.putEnumerated( idPath, idPath, idvectorMask );
    var desc = app.executeActionGet(ref);
    var pname = desc.getString(cTID('PthN'));
    // create new array;
    var theArray = new Array;
    var pathComponents = desc.getObjectValue(cTID("PthC")).getList(sTID('pathComponents'));
    // for subpathitems;
    for (var m = 0; m < pathComponents.count; m++) {
      var listKey = pathComponents.getObjectValue(m).getList(sTID("subpathListKey"));
      var operation1 = pathComponents.getObjectValue(m).getEnumerationValue(sTID("shapeOperation"));
      switch (operation1) {
      case 1097098272:
      var operation = 1097098272 //cTID('Add ');
      break;
      case 1398961266:
      var operation = 1398961266 //cTID('Sbtr');
      break;
      case 1231975538:
      var operation = 1231975538 //cTID('Intr');
      break;
      default:
    // case 1102:
      var operation = sTID('xor') //ShapeOperation.SHAPEXOR;
      break;
    // for subpathitem’s count;
      for (var n = 0; n < listKey.count; n++) {
      theArray.push(new Array);
      var points = listKey.getObjectValue(n).getList(sTID('points'));
      try {var closed = listKey.getObjectValue(n).getBoolean(sTID("closedSubpath"))}
      catch (e) {var closed = false};
    // for subpathitem’s segment’s number of points;
      for (var o = 0; o < points.count; o++) {
      var anchorObj = points.getObjectValue(o).getObjectValue(sTID("anchor"));
      var anchor = [anchorObj.getUnitDoubleValue(sTID('horizontal')), anchorObj.getUnitDoubleValue(sTID('vertical'))];
      var thisPoint = [anchor];
      try {
      var left = points.getObjectValue(o).getObjectValue(cTID("Fwd "));
      var leftDirection = [left.getUnitDoubleValue(sTID('horizontal')), left.getUnitDoubleValue(sTID('vertical'))];
      thisPoint.push(leftDirection)
      catch (e) {
      thisPoint.push(anchor)
      try {
      var right = points.getObjectValue(o).getObjectValue(cTID("Bwd "));
      var rightDirection = [right.getUnitDoubleValue(sTID('horizontal')), right.getUnitDoubleValue(sTID('vertical'))];
      thisPoint.push(rightDirection)
      catch (e) {
      thisPoint.push(anchor)
      try {
      var smoothOr = points.getObjectValue(o).getBoolean(cTID("Smoo"));
      thisPoint.push(smoothOr)
      catch (e) {thisPoint.push(false)};
      theArray[theArray.length - 1].push(thisPoint);
      theArray[theArray.length - 1].push(closed);
      theArray[theArray.length - 1].push(operation);
    // by xbytor, thanks to him;
    function cTID (s) { return cTID[s] || cTID[s] = app.charIDToTypeID(s); };
    function sTID (s) { return sTID[s] || sTID[s] = app.stringIDToTypeID(s); };
    // reset;
    app.preferences.rulerUnits = originalRulerUnits;
    return theArray;
    ////// create a path from collectPathInfoFromDesc2012-array //////
    function createPath2012(theArray, thePathsName) {
    var originalRulerUnits = app.preferences.rulerUnits;
    app.preferences.rulerUnits = Units.POINTS;
    // thanks to xbytor;
    cTID = function(s) { return app.charIDToTypeID(s); };
    sTID = function(s) { return app.stringIDToTypeID(s); };
        var desc1 = new ActionDescriptor();
        var ref1 = new ActionReference();
        ref1.putProperty(cTID('Path'), cTID('WrPt'));
        desc1.putReference(sTID('null'), ref1);
        var list1 = new ActionList();
    for (var m = 0; m < theArray.length; m++) {
      var thisSubPath = theArray[m];
        var desc2 = new ActionDescriptor();
        desc2.putEnumerated(sTID('shapeOperation'), sTID('shapeOperation'), thisSubPath[thisSubPath.length - 1]);
        var list2 = new ActionList();
        var desc3 = new ActionDescriptor();
        desc3.putBoolean(cTID('Clsp'), thisSubPath[thisSubPath.length - 2]);
        var list3 = new ActionList();
    for (var n = 0; n < thisSubPath.length - 2; n++) {
      var thisPoint = thisSubPath[n];
        var desc4 = new ActionDescriptor();
        var desc5 = new ActionDescriptor();
        desc5.putUnitDouble(cTID('Hrzn'), cTID('#Rlt'), thisPoint[0][0]);
        desc5.putUnitDouble(cTID('Vrtc'), cTID('#Rlt'), thisPoint[0][1]);
        desc4.putObject(cTID('Anch'), cTID('Pnt '), desc5);
        var desc6 = new ActionDescriptor();
        desc6.putUnitDouble(cTID('Hrzn'), cTID('#Rlt'), thisPoint[1][0]);
        desc6.putUnitDouble(cTID('Vrtc'), cTID('#Rlt'), thisPoint[1][1]);
        desc4.putObject(cTID('Fwd '), cTID('Pnt '), desc6);
        var desc7 = new ActionDescriptor();
        desc7.putUnitDouble(cTID('Hrzn'), cTID('#Rlt'), thisPoint[2][0]);
        desc7.putUnitDouble(cTID('Vrtc'), cTID('#Rlt'), thisPoint[2][1]);
        desc4.putObject(cTID('Bwd '), cTID('Pnt '), desc7);
        desc4.putBoolean(cTID('Smoo'), thisPoint[3]);
        list3.putObject(cTID('Pthp'), desc4);
        desc3.putList(cTID('Pts '), list3);
        list2.putObject(cTID('Sbpl'), desc3);
        desc2.putList(cTID('SbpL'), list2);
        list1.putObject(cTID('PaCm'), desc2);
        desc1.putList(cTID('T   '), list1);
        executeAction(cTID('setd'), desc1, DialogModes.NO);
    if (hasVectorMask() == false) {
    if (thePathsName != undefined) {app.activeDocument.pathItems[app.activeDocument.pathItems.length - 1].name = thePathsName};
    var myPathItem = app.activeDocument.pathItems[app.activeDocument.pathItems.length - 1];
    else {
    if (thePathsName != undefined) {app.activeDocument.pathItems[app.activeDocument.pathItems.length - 2].name = thePathsName};
    var myPathItem = app.activeDocument.pathItems[app.activeDocument.pathItems.length - 2];
    app.preferences.rulerUnits = originalRulerUnits;
    return myPathItem
    // from »Flatten All Masks.jsx« by jeffrey tranberry;
    // Function: hasVectorMask
    // Usage: see if there is a vector layer mask
    // Input: <none> Must have an open document
    // Return: true if there is a vector mask
    function hasVectorMask() {
      var hasVectorMask = false;
      try {
      var ref = new ActionReference();
      var keyVectorMaskEnabled = app.stringIDToTypeID( 'vectorMask' );
      var keyKind = app.charIDToTypeID( 'Knd ' );
      ref.putEnumerated( app.charIDToTypeID( 'Path' ), app.charIDToTypeID( 'Ordn' ), keyVectorMaskEnabled );
      var desc = executeActionGet( ref );
      if ( desc.hasKey( keyKind ) ) {
      var kindValue = desc.getEnumerationValue( keyKind );
      if (kindValue == keyVectorMaskEnabled) {
      hasVectorMask = true;
      }catch(e) {
      hasVectorMask = false;
      return hasVectorMask;
    ////// check for identical pathpoints //////
    function checkForIdenticalPoints (array1, array2) {
    var theReturn = new Array;
    // the subpathitems;
    for (var m = 0; m < array1.length; m++) {
    var firstCheck = false;
    var thisSub = array1[m];
    var someReturn = compareSubPathWithPath (thisSub, array2);
    if (someReturn != undefined) {theReturn.push(someReturn)};
    ////// return subpathitem if ine point is idetical //////
    function compareSubPathWithPath (thisSub, array2) {
    // the other subpathitems;
    for (var n = 0; n < array2.length; n++) {
    var thisOtherSub = array2[n];
    // the points;
    for (var o = 0; o < thisSub.length - 2; o++) {
    var thisPoint = thisSub[o][0];
    // other point:
    for (var p = 0; p < thisOtherSub.length - 2; p++) {
    var otherPoint = thisOtherSub[p][0];
    // terminate if one identical pont is found;
    if (thisPoint[0] == otherPoint[0] && thisPoint[1] == otherPoint[1]) {return thisSub}
    if (theReturn.length > 0) {return theReturn}
    else {return false}

  • Extrapolation and Line of Best Fit

    Hello,
    I'm working on a project and I need to make a line of best fit for a scatter plot graph as well as make an extrapolation on the graph...any possibility someone could help me with these two questions?
    Thank you,
    Mike

    Mike,
    Numbers 08 have functions that you can use to calculate your lines of best fit, then chart the line calculations along with your data.
    See INTERCEPT and SLOPE for 1st order lines.
    Numbers 09 added quite a few new functions and also automatic Trendline generation.
    Jerry

  • UDAs re shared members and Intersect

    I'm INTERSECTing two sets:
    Leaf-level from [Entities].CurrentMember and
    UDA([Entities],"myuda" (also leaf-level)
    This intersection works appropriately on my primary stored hierarchy but not on any of my alternative hierarchies (also stored). It does work when I zoom to the leaf level in the alternate hierarchy but not any of the rollups.
    I had assumed the UDA on the shared member (in the alternate hierarchies) would acquire the UDA of its stored member. However, it doesn't appear to be working that way.
    Can anyone shed any light on this issue or suggest a different approach?
    Thanks,
    Barb

    We're using shared members in 11.1.1.2, in both dense and sparse dimensions. So, the good news is that it can be done. The bad news is that I'm not sure why you're experiencing this issue.
    Will you provide some additional details about the dimension where you're having this issue? Is it in a shared library, or a local library? Is there any chance that the prototype member (the original non-shared member) is set to "NeverShare"? Unfortunately, EPMA will allow users to select certain settings that cause problems downstream. (And sometimes it won't allow perfectly valid settings.)
    - Jake

  • Overlapping and intersecting paths issue

    I have a logo that I've made, however I'm trying to fix this overlapping issue solely in Illustrator instead of having to use Photoshop as well. My issue is a rope that goes under and over an anchor at various points. I'm quite new to Illustrator so I'm resorting to masking out the rope in Photoshop. Below is what I'd like to have:
    And this is the furthest I can seem to get in Illustrator:
    Any attempts to break the rope path up will change the path alignment which I can't seem to correct. I've tried clipping masks and that seems to make things worse. What would you suggest? I'm using CS6 and I'm fairly new with Illustrator.

    Take your original copy of the rope adn send it to back.
    Copy a duplicate and paste this in front
    Draw rough shapes filled with black for the area you want the rope to be on top of the anchor, and group these elemtns (this will be your mask)
    Select the top rope and your mask, in the transparency palette click make mask (Versions older than CS6 this can be found in the flyout menu)
    Enable clip and invert mask

  • ADF Intersection table / create intersection rows

    Good morning everybody,
    can anyone help me with the task of using a intersection table (Many-to-Many relationship between A and B) with ADF BC ?
    This is my database design:
    TABLE A
    ID (PK)
    TABLE X (intersection table)
    TableA.ID (PK)(FK)
    TableB.ID (PK)(FK)
    Number n (PK)
    TABLE B
    ID (PK)
    I have a new bounded task flow, a dialog (2 pages), which first allows the user to create an A-object.
    The next step is to create B-Objects which belong to the A-Object.
    Then the user can commit or add more new B-objects to the A-Object.
    I have created alle the entity objects and view objects via the assistant of "new business components from tables" which created:
    Entity A
    Entity X
    Entity B
    X Assoc Fk1
    X Assoc Fk2
    VO A
    VO X
    VO B
    VL Fk1
    VL Fk2
    My task flow does this :
    1. create new VO-A (via Create with parameters)
    2. view activity CreateA
    3. create new VO-B (via Create with parameters)
    4. view activity CreateB
    from this activity you can commit transaction or go back to 3. to add more VO-Bs.
    So, how is it possible to handle the intersection table ?
    I read something about "intersection associations and intersection view links" but some people say in this context, that you dont need it (all what is build by the assistant from the tables is ok). Sorry, but this made me very confusing :-/
    Some guys recommended to create one VO which contains alle three entities (A,X,B).
    First thought was, to handle all this business logic (create new VO-X and use setter to the FK/PK IDs...) in the managed bean, but this would be very dirty... There should be a way of doing this automatically...
    I am very new to ADF and would be very happy, if anyone could help me!
    Thanks in advance,
    best regards
    Marcus
    Edited by: moonbird on 20.10.2010 00:46

    Hi John,
    my question is, how can I insert new rows to a intersection table ?
    Is there a declerative way or do I have to write code ?
    As I described before, I have two views as a bounded task flow. In the first view the user creates a new Object-A and in the second view the user creates an Object-B.
    Before each view is started, I create the correspondent VO via CreateInsert declerative, so my views shows the empty row (all its attributes to fill out).
    Thank you very much,
    Marcus

  • ORPAS:How the percentages in curve profile and resulting buy periods define

    Dear All,
    Am new to RPAS Assortment planning application,and I have a query in Assorment planning Maintain Curve Profiles
    The percentages which are entered in maintain curve profiles will change in resulting buying periods If the length of the buying period does not match that of the lifecycle curve (with exception to curves 1 and 2), the percentage distribution over weeks is extrapolated and normalized to
    100% using the shift and resize logic.
    Can anyone explain how this percentage distribution over weeks is extrapolated.Appreciate if any one can give explanation with examples
    Regards
    Krish

    GretagMacbeth ProfileMaker can tweak profiles. This program is discontinued,
    probably replaced by X-Rite's i1-Profiler.
    http://www.northlight-images.co.uk/reviews/profiling/i1_profiler_rgb_print.html
    The main purpose of ProfileMaker is not tweaking but constructing of profiles,
    based on measured targets for specific inks, specific paper and and specified
    rasterization algorithms.
    Ink colors, dot gain and Lab values for all printed patches are results of measuring.
    For the construction of a profile one can choose:
    Rendering Intent, Black generation and Total ink limit.
    Black generation is defined by UCR or GCR with different levels of strength.
    The gray balance is optimized automatically.
    If the gray balance is disturbed, then one doesn't have to adjust the Black generation.
    Ideally, different strategies for the Black generation lead to the same visual result,
    but a multi-ink black with less CMY is more stable and less prone to illuminant
    metamerism.
    Epson offers for inkjet B/W prints a special "Advanced Black and White Mode":
    http://gerryeskinstudio.com/ABW_sept08_paper/index.html
    Obviously there is a very strong GCR Black generation, but still all inks are used.
    In ProfileMaker I'm using for B/W a special profile with explicitly very strong GCR,
    thus avoiding that Epson's internal strategy bypasses my valid profiles.
    Altogether: these commercial programs are not suitable for creating ICC profiles
    merely based on abstract data (ink colors, assumed dot gain, theoretical rasterzation
    or 'halftoning'), but for creating profiles based on measured data.
    Additionally for tweaking already available profiles, but this will lead inevitably to a
    disturbed gray balance – my experience.
    As time goes by things may have changed – corrections are appreciated.
    Best regards  --Gernot Hoffmann

  • Virutal Servers and Search

    iPlanet 6.0 server on Solaris.
    I've created several virtual server classes within my server. Each Virtual SErver class has its own doc root and relys on http-header addressing to serve the correct pages. Up till now, this has worked very well for us.
    I am trying to configure and enable search on one and only one of my virtual servers, but find problems.
    I am only able to select the Searchtab when managing the default virtual server and the defaultclass ? If I go to class manager , I no longer see the search tab.
    Also, when I selected the search tab, I was only presented with docuement directories known to the defauly virtual server and default class. All of my other classes and virtual servers were not available as their docroots are elsewhere and not known to the default.
    So, how do I set this up so I can search one of my virtuals? And, I can not (or do not want to) create hardware virtual servers to do this. I need them all to answer the SAME ip address on port 80.
    Any help appreciated.....Dave

    From the
    Lightroom Extra FAQ
    b How do I create an intersection of two collections?
    >An example:
    Go to the Fred Collection. Select All (Cmd/Ctl-A).
    Go to the Beach Collection, only Fred will be selected.
    Press 'B' for a quick collection or '+' at the Collection Header and create new collection to include selected.
    b Unions and intersections of metadata
    >If you ctrl-click items in different panels - you get and intersection. e.g. ctrl-click a metadata setting and a folder. Or ctrl-click a collection and a keyword.
    >If you ctrl-click two items within a panel - you get the union.
    You can intersect the union of two items in a panel with items in a separate panel
    b More intersections
    >After selecting an item, for instance in Keyword tasks you get the result of an AND intersection by placing the mouse arrow over another item in the same panel.
    Just the intersected images are shown with a white border. The others, not bordered white, are not part of the intersection.
    Don
    Don Ricklin, MacBook 1.83Ghz Duo 2 Core running 10.4.10 & Win XP, Pentax *ist D
    http://donricklin.blogspot.com/

  • Regex Problem Using && and  ^  With Code

    When I create a pattern that uses the && or the ^ symbol it does not give me the result data.
    && is for LOGICAL AND intersection matches of data and ^ for except
    matches
    The code is below
    import java.lang.*;
    import java.util.regex.*;
    * <p>Title: RegexTest</p>
    * <p>Description: java version of hesd</p>
    * <p>Copyright: Copyright (c) 2003</p>
    * <p>Company: </p>
    * @author MR Lewis
    * @version 1.0
    public class RegexTester
    static final int NUMBEROFSTRINGS=4;
    static final int NUMBEROFEXPRESSIONS=7;
    static final int NUMBEROFTESTS=28;
    static Matcher regexMatcher;
    static String strTestString1 ="MoonRd 115 PCB 356338_NPC ... Rtn to Normal 114.47 KV !2.123088";
    static String strTestString2 ="VillaRica 115 PCB 356338_NPC ... Fail 237.47 KV !2.123089";
    static String strTestString3 ="Norcross 115 PCB 356338_NPC ... Fail 107.47 KV !2.123090";
    static String strTestString4 ="MrLewisRd 230 PCB 356338_NPC ... LO OPLmt 114.47 KV !1.123091";
    static Pattern ptnCompiledExpression=null;
    public RegexTester()
    public static void main(String[] args)
    boolean blnPatternFound=false;
         boolean blnRunLoop=true;
         int iWhileLoop=0;
         int iForLoop=0;
         int intTestNumber=1;
         int three=3;
         int one=1;
         int intExpressionNumber=0;
         String strTestStringTemp="";
         String strTestExpressionTemp="";
         String [] arrTestStrings = new String[NUMBEROFSTRINGS];
         String [] arrTestExpressions = new String[NUMBEROFEXPRESSIONS];
    arrTestExpressions[0]="MoonRd|PCB"; //TEST OR EXPRESSION
    arrTestExpressions[1]="Vill&&Normal"; //TEST AND EXPRESSION **DOES NOT WORK**
    arrTestExpressions[2]="^Fail"; //TEST ^ EXCEPTION EXPRESSION **DOES NOT WORK**
    arrTestExpressions[3]="PCB"; //TEST REGULAR PATTERN
    arrTestExpressions[4]="^(!2)"; //TEST OF ^ EXCEPTION ANOTHER WAYE **DOES NOT WORK**
    arrTestExpressions[5]="(!1)"; //TEST OF PATTERN
         arrTestStrings[0] ="MoonRd 115 PCB 356338_NPC ... Rtn to Normal 114.47 KV !2.123088";
         arrTestStrings[1] ="VillaRica 115 PCB 356338_NPC ... Fail 237.47 KV !2.123089";
         arrTestStrings[2] ="Norcross 115 PCB 356338_NPC ... Fail 107.47 KV !2.123090";
    arrTestStrings[3] ="MrLewisRd 230 PCB 356338_NPC ... LO OPLmt 114.47 KV !1.123091";
         RegexTester regexTest1 = new RegexTester();
         while(blnRunLoop)
    if(iWhileLoop==0){strTestExpressionTemp=arrTestExpressions[0];} //test each expression
         else{strTestExpressionTemp=arrTestExpressions[intExpressionNumber];} //test each expression
         systemlog("\n\nTest #"+intTestNumber+ "-"+(intTestNumber+three)+"\t\t<"+strTestExpressionTemp+">");
         systemlog("------------------------------------------------------------");
         for(; iForLoop<NUMBEROFSTRINGS; iForLoop++)
         strTestStringTemp=arrTestStrings[iForLoop];
              ptnCompiledExpression = compilepatterns(strTestExpressionTemp);
         regexMatcher = ptnCompiledExpression.matcher(strTestStringTemp);
         blnPatternFound=regexMatcher.find();
         if(blnPatternFound)
              systemlog("\tFound: "+strTestStringTemp);
         else
              systemlog("\tNOTHING TO REPORT USING: "+strTestExpressionTemp);
         intTestNumber++;
              if(iForLoop==3){intExpressionNumber++;}
         iForLoop=0;
         regexMatcher.reset();
         iWhileLoop++;
         if((intTestNumber+three)==NUMBEROFTESTS){blnRunLoop=false;break;}
    private static synchronized Pattern compilepatterns (String strExpression)
         Pattern ptnReturn;
         ptnReturn = Pattern.compile(strExpression);
    // systemlog("Complied=>"+ ptnReturn.pattern().toString()+"<=Expression");
         return(ptnReturn);
    private static void systemlog (String strSystemMessage)
         System.out.println(strSystemMessage);
    Have you ran across any issues with this?
    Are there some search limitations ?
    Based on the following input data
    "MoonRd 115 PCB 356338_NPC ... Rtn to Normal 114.47 KV !2.123088";
    "VillaRica 115 PCB 356338_NPC ... Fail 237.47 KV !2.123089";
    "Norcross 115 PCB 356338_NPC ... Fail 107.47 KV !2.123090";
    "MrLewisRd 230 PCB 356338_NPC ... LO OPLmt 114.47 KV !1.123091";
    Test #1-4          <MoonRd|PCB>
    Found: MoonRd 115 PCB 356338_NPC ... Rtn to Normal 114.47 KV !2.123088      
    Found: VillaRica 115 PCB 356338_NPC ... Fail 237.47 KV !2.123089      
    Found: Norcross 115 PCB 356338_NPC ... Fail 107.47 KV !2.123090      
    Found: MrLewisRd 230 PCB 356338_NPC ... LO OPLmt 114.47 KV !1.123091
    Test #5-8          <Vill&&Normal>
    NOTHING TO REPORT USING: Vill&&Normal      
    NOTHING TO REPORT USING: Vill&&Normal      
    NOTHING TO REPORT USING: Vill&&Normal      
    NOTHING TO REPORT USING: Vill&&Normal
    Test #9-12          <^Fail>
    NOTHING TO REPORT USING: ^Fail      
    NOTHING TO REPORT USING: ^Fail      
    NOTHING TO REPORT USING: ^Fail      
    NOTHING TO REPORT USING: ^Fail
    Test #13-16          <PCB>
    Found: MoonRd 115 PCB 356338_NPC ... Rtn to Normal 114.47 KV !2.123088      
    Found: VillaRica 115 PCB 356338_NPC ... Fail 237.47 KV !2.123089      
    Found: Norcross 115 PCB 356338_NPC ... Fail 107.47 KV !2.123090
    Found: MrLewisRd 230 PCB 356338_NPC ... LO OPLmt 114.47 KV !1.123091
    Test #17-20          <^(!2)>
    NOTHING TO REPORT USING: ^(!2)      
    NOTHING TO REPORT USING: ^(!2)      
    NOTHING TO REPORT USING: ^(!2)      
    NOTHING TO REPORT USING: ^(!2)
    Test #21-24          <(!1)>
    NOTHING TO REPORT USING: (!1)      
    NOTHING TO REPORT USING: (!1)      
    NOTHING TO REPORT USING: (!1)      
    Found: MrLewisRd 230 PCB 356338_NPC ... LO OPLmt 114.47 KV !1.123091

    The first solution yeilded the following which is still wrong.
    here is there result when I use the \\&\\& and the \\^ which is still wrong.
    how come there is no easy way to just say give me the lines that match vill and fail
    Test #1-4          <MoonRd|PCB>
         Found: MoonRd 115 PCB 356338_NPC ... Rtn to Normal 114.47 KV !2.123088
         Found: VillaRica 115 PCB 356338_NPC ... Fail 237.47 KV !2.123089
         Found: Norcross 115 PCB 356338_NPC ... Fail 107.47 KV !2.123090
         Found: MrLewisRd 230 PCB 356338_NPC ... LO OPLmt 114.47 KV !1.123091
    when I Used the \\&\\&
    Test #5-8          <Vill\&\&[Normal]>
         NOTHING TO REPORT USING: Vill\&\&[Normal]
         NOTHING TO REPORT USING: Vill\&\&[Normal]
         NOTHING TO REPORT USING: Vill\&\&[Normal]
         NOTHING TO REPORT USING: Vill\&\&[Normal]
    Test #9-12          <\^Fail>
         NOTHING TO REPORT USING: \^Fail
         NOTHING TO REPORT USING: \^Fail
         NOTHING TO REPORT USING: \^Fail
         NOTHING TO REPORT USING: \^Fail
    Test #13-16          <PCB>
         Found: MoonRd 115 PCB 356338_NPC ... Rtn to Normal 114.47 KV !2.123088
         Found: VillaRica 115 PCB 356338_NPC ... Fail 237.47 KV !2.123089
         Found: Norcross 115 PCB 356338_NPC ... Fail 107.47 KV !2.123090
         Found: MrLewisRd 230 PCB 356338_NPC ... LO OPLmt 114.47 KV !1.123091
    Test #17-20          <\^(!2)>
         NOTHING TO REPORT USING: \^(!2)
         NOTHING TO REPORT USING: \^(!2)
         NOTHING TO REPORT USING: \^(!2)
         NOTHING TO REPORT USING: \^(!2)
    Test #21-24          <(!1)>
         NOTHING TO REPORT USING: (!1)
         NOTHING TO REPORT USING: (!1)
         NOTHING TO REPORT USING: (!1)
         Found: MrLewisRd 230 PCB 356338_NPC ... LO OPLmt 114.47 KV !1.123091

  • Exist and no exists

    Hello,
    i need help with this query.
    how can i re-write without using the not exists.
    here is my query:
    insert into rel (id)
    select id from test a where bo ='QW' and not exists (select 1 from testing where id = a.id);
    Thanks.

    789287 wrote:
    i would like to see if i can use not in or some other way to produce the same results.Its always good to have multiple ways of doing things in case one doesn't work for some reason!
    NOT/EXISTS is probably your best bet for performance if the subquery is properly indexed, but other options include IN and INTERSECT/MINUS (depending on circumstances), something like (untested)
    insert into rel (id)
    select id from test a
    where bo ='QW'
        and id not IN (
          select id from testing where id = a.id
    insert into rel (id)
    select id from test a
    MINUS
    select id from testingINTERSECT can be used to simulate EXISTS/IN but only when one value is selected. Similarlary MINUS can be used to simulate NOT EXISTS/IN.
    Any such workarounds must be carefully tested to ensure that the correct results are returned. I would probably stick with IN/EXISTS for simplicity unless one of the other methods worked better for performance or other reasons.

  • Rectangular Grid Tool - Guide, Anchor, but NO Intersect?

    When using the Rectangular Grid Tool I am starting from the upper edge of the artboard and when moving along the edge I see green indicators stating "Guide" when I am somewhere on the path, and "Anchor" when I am at the edge, "0,0" for instance.
    However, I am trying to follow along with a video tutorial, and in the tutorial it shows the same thing EXCEPT that there is AN "Intersect" value in green in the tutorial. The demonstrator verbally mentions the importance of achieving this "Intersect" value several times. So I am wondering why I am not seeing it.
    The demonstrator mentions making sure that I have "Smart Guides" turned on, and I DO.
    In the video when the demonstrator is hovering over the guide lines with the grid tool it shows two values "PAGE" and "INTERSECT".
    On my local machine when I am hovering over the same guide lines with the grid tool it shows two values "GUIDE" and "ANCHOR".
    I have looked at the preferences when grid tool is selected and played around with different settings. I have also played around with different snap to settings from main menu, and nothing.
    What am I missing?
    Here are two images showing what it looks like in the video tutorial, and what I am seeing locally on my machine when trying to duplicate this myself.
    VIDEO TUTORIAL SCREENSHOT:
    LOCAL MACHINE SCREENSHOT:
    Thank you for looking!

    The grid of guides in the tutorial screenshot shows no guides along the perimeter of the artboard, so there is no anchor point there, just the artboard; the local screenshot has guides on the perimeter, so the label correctly shows an anchor point in the corner. You would need to go to View > Guides > Lock to deselect Lock so that you can select and delete the offending guides. Smart Guides will then show intersect at the corner of the artboard and page anywhere else along the edge.
    Intersect appears where two paths cross without an anchor point.

  • Is there a way to copy and paste the same changes in keyframes along the timeline?

    Hi,
    I was doing an effect (changing the parameters in keyframe editor) and I wanted to do the same effect in specific moments on the timeline. Is it possible to copy and paste the same effect on the keyframe editor?
    Thanks

    Following on from GFXZen, as well as repeating a series of keyframes as a regular pattern, if you need to move some of the repeats a little (to match moments in a soundtrack), use the Generate Keyframes command. That turns the extrapolated curves into editable and moveable keyframes.
    There's more on information on keyframe extrapolation and generating keyframes at the bottom of this page from the Motion help system.
    Check out the help information on the Transform Keyframes tool - you can use this to transform the keyframes of many parameters at the same time. Similar to using the option key when dragging keyframes in Adobe After Effects.

  • Computing polygons from intersecting lines

    I have a bounding rectangle that a user can add lines onto. The lines will always extend to intersect the rectangle, so a new shape is always created. Does anyone have any ideas how I would traverse the lines and intersection points to create the bounded polygons created as each new line is added? I need to be able to color each piece of the created polygon differently.
    Currently I create lines and intersections which I associated with each other. I then tried traversing all intersections on line switching to the intersecting line at each intersection point. I compare the distance to the origin to determine the best point to chose on the intersecting line, but this is problematic. Is there an easier way to do this?

    I figured it out. You essentially have to keep
    Split the lines into segments
    Iterate through the list of segments
    Track of the origin point
    Determine if a candidate point crosses any other line.
    etc.

Maybe you are looking for