Changeset 34584 for trunk/Ohana/src/opihi/cmd.data/plot.c
- Timestamp:
- Oct 25, 2012, 10:26:16 AM (14 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/opihi/cmd.data/plot.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/cmd.data/plot.c
r32346 r34584 3 3 int plot (int argc, char **argv) { 4 4 5 int kapa, N, Npts; 5 char *out; 6 int kapa, N, Npts, valid, size, i; 6 7 Graphdata graphmode; 7 8 Vector *xvec, *yvec, *dxmvec, *dxpvec, *dymvec, *dypvec; … … 32 33 } 33 34 34 if (argc != 3) { 35 valid = (argc == 3); 36 valid |= (argc > 4) && !strcmp (argv[3], "where"); 37 if (!valid) { 35 38 gprint (GP_ERR, "USAGE: plot <x> <y> [style]\n"); 39 gprint (GP_ERR, " OR: plot <x> <y> [style] where (condition)\n"); 36 40 return (FALSE); 41 } 42 43 // tvec is used for logical test (truth vector) 44 Vector *tvec = NULL; 45 char *mask = NULL; 46 if (argc > 4) { 47 out = dvomath (argc - 4, &argv[4], &size, 1); 48 if (out == NULL) { 49 print_error (); 50 return FALSE; 51 } 52 if ((tvec = SelectVector (out, OLDVECTOR, TRUE)) == NULL) { 53 gprint (GP_ERR, " invalid logic result\n"); 54 DeleteNamedVector (out); 55 free (out); 56 return (FALSE); 57 } 37 58 } 38 59 … … 53 74 return (FALSE); 54 75 } 76 if (tvec && tvec[0].Nelements != yvec[0].Nelements) { 77 gprint (GP_ERR, "logic test vector not the same length as data vectors\n"); 78 return (FALSE); 79 } 55 80 if (dypvec && (dypvec->Nelements != xvec->Nelements)) goto mismatch; 56 81 if (dymvec && (dymvec->Nelements != xvec->Nelements)) goto mismatch; … … 59 84 60 85 Npts = xvec[0].Nelements; 61 if (Npts == 0) return (TRUE); 86 if (Npts == 0) { 87 if (tvec) DeleteVector (tvec); 88 return (TRUE); 89 } 90 91 if (tvec) { 92 Npts = 0; 93 ALLOCATE (mask, char, tvec->Nelements); 94 for (i = 0; i < tvec->Nelements; i++) { 95 mask[i] = (tvec->type == OPIHI_FLT) ? (tvec->elements.Flt[i] == 0.0) : (tvec->elements.Int[i] == 0.0); 96 if (!mask[i]) Npts ++; 97 } 98 if (Npts == 0) { 99 DeleteVector (tvec); 100 free (mask); 101 return TRUE; 102 } 103 } 62 104 63 105 if (!KapaPrepPlot (kapa, Npts, &graphmode)) return (FALSE); 64 106 65 PlotVectorSingle (kapa, xvec, "x");66 PlotVectorSingle (kapa, yvec, "y");107 PlotVectorSingle (kapa, xvec, mask, "x"); 108 PlotVectorSingle (kapa, yvec, mask, "y"); 67 109 if (graphmode.etype & 0x01) { 68 PlotVectorSingle (kapa, dymvec, "dym");69 PlotVectorSingle (kapa, dypvec, "dyp");110 PlotVectorSingle (kapa, dymvec, mask, "dym"); 111 PlotVectorSingle (kapa, dypvec, mask, "dyp"); 70 112 } 71 113 if (graphmode.etype & 0x02) { 72 PlotVectorSingle (kapa, dxmvec, "dxm"); 73 PlotVectorSingle (kapa, dxpvec, "dxp"); 114 PlotVectorSingle (kapa, dxmvec, mask, "dxm"); 115 PlotVectorSingle (kapa, dxpvec, mask, "dxp"); 116 } 117 118 if (tvec) { 119 free (mask); 120 DeleteVector (tvec); 74 121 } 75 122 return (TRUE);
Note:
See TracChangeset
for help on using the changeset viewer.
