How to create a Mesh from normals and uv in Unity? - unity3d

Hi I have this data coming from an API and I know it is a cube:
{
"position": {
"itemSize": 3,
"type": "Float32Array",
"array": [
0.5,
0.5,
0.5,
0.5,
0.5,
-0.5,
0.5,
-0.5,
0.5,
0.5,
-0.5,
-0.5,
-0.5,
0.5,
-0.5,
-0.5,
0.5,
0.5,
-0.5,
-0.5,
-0.5,
-0.5,
-0.5,
0.5,
-0.5,
0.5,
-0.5,
0.5,
0.5,
-0.5,
-0.5,
0.5,
0.5,
0.5,
0.5,
0.5,
-0.5,
-0.5,
0.5,
0.5,
-0.5,
0.5,
-0.5,
-0.5,
-0.5,
0.5,
-0.5,
-0.5,
-0.5,
0.5,
0.5,
0.5,
0.5,
0.5,
-0.5,
-0.5,
0.5,
0.5,
-0.5,
0.5,
0.5,
0.5,
-0.5,
-0.5,
0.5,
-0.5,
0.5,
-0.5,
-0.5,
-0.5,
-0.5,
-0.5
],
"normalized": false
},
"normal": {
"itemSize": 3,
"type": "Float32Array",
"array": [
1,
0,
0,
1,
0,
0,
1,
0,
0,
1,
0,
0,
-1,
0,
0,
-1,
0,
0,
-1,
0,
0,
-1,
0,
0,
0,
1,
0,
0,
1,
0,
0,
1,
0,
0,
1,
0,
0,
-1,
0,
0,
-1,
0,
0,
-1,
0,
0,
-1,
0,
0,
0,
1,
0,
0,
1,
0,
0,
1,
0,
0,
1,
0,
0,
-1,
0,
0,
-1,
0,
0,
-1,
0,
0,
-1
],
"normalized": false
},
"uv": {
"itemSize": 2,
"type": "Float32Array",
"array": [
0,
1,
1,
1,
0,
0,
1,
0,
0,
1,
1,
1,
0,
0,
1,
0,
0,
1,
1,
1,
0,
0,
1,
0,
0,
1,
1,
1,
0,
0,
1,
0,
0,
1,
1,
1,
0,
0,
1,
0,
0,
1,
1,
1,
0,
0,
1,
0
],
"normalized": false
}
}
How can I now create from these data a cube and its material in Unity? Is there a library or a built-in function?

First in general for parsing your JSON data into useful structure you need to have an according class structure and the use e.g. JsonUtility
[Serializable]
public class DataSet
{
public int itemSize;
public int[] array;
public bool normalized;
}
[Serializable]
public class Example
{
public DataSet position;
public DataSet normal;
public DataSet uv;
}
and do
var data = JsonUtility.FromJson<Example>(yourJsonString);
Next this data is still quite raw and we have to parse it further since we want valid vector values
var vertices = new List<Vector3>();
for(var i = 0; i < data.position.array.Length; i+=3)
{
if(i+2 > data.position.array.Length - 1) break;
var x = data.position.array[i];
var y = data.position.array[i+1];
var z = data.position.array[i+2];
vertices.Add(new Vector3(x,y,z));
}
And similar for normals and UVs(just that here you use Vector2 instead)
Then to the main question: Since you already have positions (I assume vertices), normals and UVs I guess you are wondering where to get the triangles from.
UVs don't help here at all since they are only texture coordinates defining how the texture is later mapped on triangles.
Also the normals can't really help you here. A normal is just a direction and doesn't provide any helpful information about which three vertices together make up a triangle.
To get the triangles would only be possible if you know e.g. that always 3 sequential vertices make up a triangle - meaning your mesh has duplicate vertices.
Otherwise I'ld say it is not possible to know that triangles from your given data.
In Unity the triangles is simply a flat int[] where always three sequential elements are the indexes of the three vertices from the vertices array.
So under the one assumption that they are just consequent something like
var triangles = new int[vertices.Length];
for(var i = 0; i < triangles.Length; i++)
{
triangles[i] = i;
}
Then you could simply put it all together and create a mesh like
var mesh = new Mesh();
mesh.vertices = vertices;
mesh.triangles = triangles;
// Etc

Related

about nodelist in triadic_census for netwrokx

I want to get triadic_census in a single node, this is the code example:
import netwrokx as nx
G = nx.DiGraph([("b", "a"), ("b","c")])
print(nx.triadic_census(G))
print(nx.triadic_census(G,nodelist=["c"]))
But the result is different from what I think. this is the result of code:
{'003': 0, '012': 0, '102': 0, '021D': 1, '021U': 0, '021C': 0, '111D': 0, '111U': 0, '030T': 0, '030C': 0, '201': 0, '120D': 0, '120U': 0, '120C': 0, '210': 0, '300': 0}
{'003': 0, '012': 0, '102': 0, '021D': 0, '021U': 0, '021C': 0, '111D': 0, '111U': 0, '030T': 0, '030C': 0, '201': 0, '120D': 0, '120U': 0, '120C': 0, '210': 0, '300': 0}
I think Node C should also be part of 021D, i want to know whether the parameters I have entered are not right?
The problem has been fixed networkx pr

How to render a structured mesh in Octave

I would like to recreate this sort of "cubic" surface rendering in GNU Octave:
[From AEG Mesher documentation]
How can I achieve this, given a list of coordinates which represent a surface or volume in a structured grid?
Obviously there's probably much more elaborate frameworks out there, but just to demonstrate the concept: the idea that you can only work with triangular patches is incorrect. You can specify your own patches as elaborately as you want.
In the following example, I create a simple function which draws a 3D cube 'patch', to be treated as a 'pixel' element in a structured 'mesh'.
function drawpatchpixel( x, y, z, c )
Vertices = [ 0, 0, 0
0, 1, 0
1, 1, 0
1, 0, 0
0, 0, 1
0, 1, 1
1, 1, 1
1, 0, 1 ];
Faces = [ 1, 2, 3, 4 # front
2, 6, 7, 3 # top
5, 6, 7, 8 # back
1, 5, 8, 4 # bottom
1, 2, 6, 5 # left
4, 3, 7, 8 ]; # right
patch( 'Faces', Faces, 'Vertices', Vertices + [x, y, z], 'facecolor', c )
endfunction
Then I simply draw the pixels in the preferred colour:
Pixels = { 0, 0, 0, 'r'; # base
1, 0, 0, 'r';
2, 0, 0, 'r';
3, 0, 0, 'r';
4, 0, 0, 'r';
4, 1, 0, 'r';
4, 2, 0, 'r';
4, 3, 0, 'r';
4, 4, 0, 'r';
3, 4, 0, 'r';
2, 4, 0, 'r';
1, 4, 0, 'r';
0, 4, 0, 'r';
0, 3, 0, 'r';
0, 2, 0, 'r';
0, 1, 0, 'r';
0, 0, 1, [0.5, 0.5, 0.5]; # pillars
0, 0, 2, [0.5, 0.5, 0.5];
0, 0, 3, [0.5, 0.5, 0.5];
0, 0, 4, [0.5, 0.5, 0.5];
4, 0, 1, [0.5, 0.5, 0.5];
4, 0, 2, [0.5, 0.5, 0.5];
4, 0, 3, [0.5, 0.5, 0.5];
4, 0, 4, [0.5, 0.5, 0.5];
4, 4, 1, [0.5, 0.5, 0.5];
4, 4, 2, [0.5, 0.5, 0.5];
4, 4, 3, [0.5, 0.5, 0.5];
4, 4, 4, [0.5, 0.5, 0.5];
0, 4, 1, [0.5, 0.5, 0.5];
0, 4, 2, [0.5, 0.5, 0.5];
0, 4, 3, [0.5, 0.5, 0.5];
0, 4, 4, [0.5, 0.5, 0.5];
0, 1, 4, 'g'; # roof
0, 2, 4, 'g';
0, 3, 4, 'g';
4, 1, 4, 'g';
4, 2, 4, 'g';
4, 3, 4, 'g';
1, 0, 4, 'g';
2, 0, 4, 'g';
3, 0, 4, 'g';
1, 4, 4, 'g';
2, 4, 4, 'g';
3, 4, 4, 'g';
};
NPixels = size( Pixels, 1 );
for i = 1 : NPixels
drawpatchpixel( Pixels{i, :} )
endfor
axis equal
view( 30, 30 )
xlabel( 'x'); ylabel('y'), zlabel('z');
camlight
Result:

Save a string to a h5py dataset using type "array of 8-bit integers (80)"

I wish to create a h5py "string" dataset (for example "A"), using the data type "array of 8-bit integers (80)" (as shown in HDFView, see here). Each integer of this array of length 80 is in fact ord(x) of the corresponding character of this string. So for instance Top is stored as 84 111 112 0 0 0 ..., with in total 80 int8.
The desired dataset should look like this
DATASET "NOM" {
DATATYPE H5T_ARRAY { [80] H5T_STD_I8LE }
DATASPACE SIMPLE { ( 1 ) / ( 1 ) }
DATA {
(0): [ 84, 111, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
}
However I'm unable to create this dataset using h5py. Using a standard numpy array gives this
DATASET "NOM" {
DATATYPE H5T_STD_I8LE
DATASPACE SIMPLE { ( 1, 80 ) / ( 1, 80 ) }
DATA {
(0,0): 84, 111, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(0,15): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(0,31): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(0,47): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(0,63): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(0,79): 0
}
}
So what is data and dtype needed, if my string, say, is "Top".
.create_dataset("NOM", data=data, dtype=dtype)
According to https://github.com/h5py/h5py/issues/955, maybe I need to use a lower level interface...?
Thanks!
Solution
The problem is that if we create the numpy dataset data before writing it by using .create_dataset("NOM", data=data), internally numpy will always interpret my 80int8 data type as a 1d array of int8
dtype = np.dtype("80int8")
x = np.array(2, dtype=dtype)
# x.dtype = dtype('int8')
The solution is thus to declare the data set with the desired dtype first, then fill in the data.
dataset = gro.create_dataset("NOM", (len(nom),), dtype="80int8")
for i in range(len(nom)):
nom_80 = nom[i] + "\x00" * (80 - len(nom[i])) # make nom 80 characters
dataset[i] = [ord(x) for x in nom_80]
# dataset.dtype = dtype(('i1', (80,)))
Make a uint8 array of right size and content:
In [417]: x = np.zeros(80, dtype='uint8')
In [419]: x[:3]=[ord(i) for i in 'Top']
In [421]: ds1=hf.create_dataset('other4', data=x)
A structured array approach:
In [486]: dt = np.dtype([('f0','80int8')])
In [487]: dt
Out[487]: dtype([('f0', 'i1', (80,))])
In [488]: x = np.zeros(1, dt)
In [489]: x['f0'][0][:3]=[ord(i) for i in 'Top']
In [490]: x
Out[490]:
array([([ 84, 111, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],)],
dtype=[('f0', 'i1', (80,))])
In [491]: ds1=hf.create_dataset('st1', data=x)
In [492]: ds1
Out[492]: <HDF5 dataset "st1": shape (1,), type "|V80">
produces
DATASET "st1" {
DATATYPE H5T_COMPOUND {
H5T_ARRAY { [80] H5T_STD_I8LE } "f0";
}
DATASPACE SIMPLE { ( 1 ) / ( 1 ) }
DATA {
(0): {
[ 84, 111, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
}
}
}

Wrong layout of tiles

I create a level an array of int's. This is the code:
using UnityEngine;
using System.Collections;
public class Level1 : MonoBehaviour
{
int[][] level = new int[][]
{
new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
new int[] { 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}
};
public Transform tile00;
public Transform tile16;
public Transform tile38;
int rows = 12;
int cols = 32;
void Start ()
{
BuildLevel ();
}
void BuildLevel(){
int i, j;
GameObject dynamicParent = GameObject.Find ("DynamicObjects");
for(i=0; i<rows; i++)
{
for(j=0; j<cols; j++)
{
Transform toCreate = null;
Debug.Log (i + " , " + j + " " + level[i][j]);
if (level[i][j] == 0)
toCreate = tile00;
if (level[i][j] == 83)
toCreate = tile38;;
if (level[i][j] == 16)
toCreate = tile16;
Vector3 v3 = new Vector3(16-j, 6-i, 0);
Transform newObject = Instantiate(toCreate, v3, Quaternion.identity) as Transform;
newObject.parent = dynamicParent.transform;
}
}
}
}
The output screen is like that:
The tiles are 50 X 50. I changed the dimensions of tiles, I changed the positions on X and Y. I tried everything but I found no solution.Could you give me an ideea, please ?
For the horizontal tiles the layout I want to obtain is (the image is processed with paint) :
The most likely answer is because of this line
Vector3 v3 = new Vector3(16-j, 6-i, 0);
You say that your images are 50 x 50 px each. Assuming that you haven't changed the pixels to units property of your sprite, this would make each of these image occupy a space of 0.5 Unity units on both the X & Y axes.
Now, in your calculation, here's what is happening.
Iteration 1 - (i = 0, j = 0). Position = Vector3(16, 6, 0)
Iteration 2 - (i = 0, j = 1). Position = Vector3(15, 6, 0)...
Iteration 33 -(i = 1, j = 0). Position = Vector3(16, 5, 0)
Now, the difference in the X values between Iteration 1 & Iteration 2 is 1 Unity unit. We've already established earlier that these Sprites will occupy only 0.5 Unity unit due to their size.
Same thing along the Y axis for Iteration 1 & Iteration 33. A difference of 1 unit, with each image occupying only 0.5 units.
So, either change the image to be 100 x 100 px, or change the pixels to units

Why matbugs never stops running?

I can run a model in WinBUGS14 with no problem and get the results, but I get a problem when I run the same WinBUGS model (shown as below) from MatLab. It looks the program never stops running and no results return.
Can anyone help me. Any advice will be greatly appreciated. Thanks.
1) my WinBUGS Code --- CHK_model.txt
model {
for(i in 1: N) {
CF01[i] ~ dnorm(0, 20)
CF02[i] ~ dnorm(0, 1)
h[i] ~ dpois (lambda [i])
log(lambda [i]) <- beta0 + beta1*CF03[i] + beta2*CF02[i] + beta3*CF01[i] + beta4*IND[i]
}
beta0 ~ dnorm(0.0, 1.0E-6)
beta1 ~ dnorm(0.0, 1.0E-6)
beta2 ~ dnorm(0.0, 1.0E-6)
beta3 ~ dnorm(0.0, 1.0E-6)
beta4 <- log(p)
p ~ dunif(lower, upper)
}
2) my MatLab Code
dataStruct = struct( ...
'N', 155, ...
'lower', 0.80, ...
'upper', 0.95, ...
'h',[1, 4, 1, 2, 1, 2, 1, 1, 1, 3, 3, 0, 0, 0, 2, 0, 1, 0, 4, 2, ...
3, 0, 2, 1, 1, 2, 2, 2, 3, 4, 2, 3, 1, 0, 1, 3, 3, 3, 1, 0, 1, ...
0, 5, 2, 1, 2, 1, 3, 3, 1, 1, 0, 2, 2, 0, 3, 0, 0, 3, 2, 2, 2, ...
1, 0, 3, 3, 1, 1, 1, 2, 1, 0, 1, 2, 1, 2, 0, 2, 1, 0, 0, 2, 5, ...
0, 2, 1, 0, 2, 1, 2, 2, 2, 0, 3, 2, 1, 3, 3, 3, 3, 0, 1, 3, 3, ...
3, 1, 0, 0, 1, 2, 1, 0, 1, 4, 1, 1, 1, 1, 2, 1, 3, 0, 0, 1, 1, ...
1, 1, 0, 2, 1, 0, 0, 1, 1, 5, 1, 1, 1, 3, 0, 1, 1, 1, 0, 2, 1, ...
0, 3, 3, 0, 0, 1, 2, 6, nan], ...
'CF03',[-1.575, 0.170, -1.040, -0.010, -0.750, ...
0.665, -0.250, 0.145, -0.345, -1.915, -1.515, ...
0.215, -1.040, -0.035, 0.805, -0.860, -1.775, ...
1.725, -1.345, 1.055, -1.935, -0.160, -0.075, ...
-1.305, 1.175, 0.130, -1.025, -0.630, 0.065, ...
-0.665, 0.415, -0.660, -1.145, 0.165, 0.955, ...
-0.920, 0.250, -0.365, 0.750, 0.045, -2.760, ...
-0.520, -0.095, 0.700, 0.155, -0.580, -0.970, ...
-0.685, -0.640, -0.900, -0.250, -1.355, -1.330, ...
0.440, -1.505, -1.715, -0.330, 1.375, -1.135, ...
-1.285, 0.605, 0.360, 0.705, 1.380, -2.385, -1.875, ...
-0.390, 0.770, 1.605, -0.430, -1.120, 1.575, 0.440, ...
-1.320, -0.540, -1.490, -1.815, -2.395, 0.305, ...
0.735, -0.790, -1.070, -1.085, -0.540, -0.935, ...
-0.790, 1.400, 0.310, -1.150, -0.725, -0.150, ...
-0.640, 2.040, -1.180, -0.235, -0.070, -0.500, ...
-0.750, -1.450, -0.235, -1.635, -0.460, -1.855, ...
-0.925, 0.075, 2.900, -0.820, -0.170, -0.355, ...
-0.170, 0.595, 0.655, 0.070, 0.330, 0.395, 1.165, ...
0.750, -0.275, -0.700, 0.880, -0.970, 1.155, 0.600, ...
-0.075, -1.120, 1.480, -1.255, 0.255, 0.725, ...
-1.230, -0.760, -0.380, -0.015, -1.005, -1.605, ...
0.435, -0.695, -1.995, 0.315, -0.385, -0.175, ...
-0.470, -1.215, 0.780, -1.860, -0.035, -2.700, ...
-1.055, 1.210, 0.600, -0.710, 0.425, 0.155, -0.525, ...
-0.565], ...
'CF02',[nan, nan, nan, nan, nan, nan, nan, nan, nan, ...
nan, nan, nan, nan, nan, nan, 0.38, 0.06, -0.94, ...
-0.02, -0.28, -0.78, -0.95, 2.33, 1.43, 1.24, 1.26, ...
-0.75, -1.5, -2.09, 1.01, -0.05, 2.48, 2.48, 0.46, ...
0.46, -0.2, -1.11, 0.52, -0.37, 0.58, 0.86, 0.59, ...
-0.12, -1.33, 1.4, -1.84, -1.4, -0.76, -0.23, ...
-1.78, -1.43, 1.2, 0.32, 1.87, 0.43, -1.71, -0.54, ...
-1.25, -1.01, -1.98, 0.52, -1.07, -0.44, -0.24, ...
-1.31, -2.14, -0.43, 2.47, -0.09, -1.32, -0.3, ...
-0.99, 1.1, 0.41, 1.01, -0.19, 0.45, -0.07, -1.41, ...
0.87, 0.68, 1.61, 0.36, -1.06, -0.44, -0.16, 0.72, ...
-0.69, -0.94, 0.11, 1.25, 0.33, -0.05, 0.87, -0.37, ...
-0.2, -2.22, 0.26, -0.53, -1.59, 0.04, 0.16, -2.66, ...
-0.21, -0.92, 0.25, -1.36, -1.62, 0.61, -0.2, 0, ...
1.14, 0.27, -0.64, 2.29, -0.56, -0.59, 0.44, -0.05, ...
0.56, 0.71, 0.32, -0.38, 0.01, -1.62, 1.74, 0.27, 0.97, ...
1.22, -0.21, -0.05, 1.15, 1.49, -0.15, 0.05, -0.87, ...
-0.3, -0.08, 0.5, 0.84, -1.67, 0.69, 0.47, 0.44, ...
-1.35, -0.24, -1.5, -1.32, -0.08, 0.76, -0.57, ...
-0.84, -1.11, 1.94, -0.68], ...
'CF01',[nan, nan, nan, nan, nan, nan, nan, nan, nan, ...
nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, ...
nan, -0.117, -0.211, -0.333, -0.229, -0.272, ...
-0.243, -0.148, 0.191, -0.263, -0.239, -0.168, ...
-0.381, -0.512, -0.338, -0.296, 0.067, 0.104, ...
-0.254, -0.167, -0.526, -0.096, -0.43, 0.013, ...
-0.438, -0.297, -0.131, -0.098, -0.046, -0.063, ...
-0.194, -0.155, -0.645, -0.603, -0.374, -0.214, ...
-0.165, -0.509, -0.171, -0.442, -0.468, -0.289, ...
-0.427, -0.519, -0.454, 0.046, -0.275, -0.401, ...
-0.542, -0.488, -0.52, -0.018, -0.551, -0.444, ...
-0.254, -0.286, 0.048, -0.03, -0.015, -0.219, ...
-0.029, 0.059, 0.007, 0.157, 0.141, -0.035, 0.136, ...
0.526, 0.113, 0.22, -0.022, -0.173, 0.021, -0.027, ...
0.261, 0.082, -0.266, -0.284, -0.097, 0.097, -0.06, ...
0.397, 0.315, 0.302, -0.026, 0.268, -0.111, 0.084, ...
0.14, -0.073, 0.287, 0.061, 0.035, -0.022, -0.091, ...
-0.22, -0.021, -0.17, -0.184, 0.121, -0.192, ...
-0.24, -0.283, -0.003, -0.45, -0.138, -0.143, ...
0.017, -0.245, 0.003, 0.108, 0.015, -0.219, 0.09, ...
-0.22, -0.004, -0.178, 0.396, 0.204, 0.342, 0.079, ...
-0.034, -0.122, -0.24, -0.125, 0.382, 0.072, 0.294, ...
0.577, 0.4, 0.213, 0.359, 0.074, 0.388, 0.253, 0.167], ...
'IND',[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...
0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
Nchains = 3;
clear initStructs;
for i=1:Nchains
S.beta0 = 0;
S.beta1 = 0;
S.beta2 = 0;
S.beta3 = 0;
S.P = 0.9;
initStructs(i) = S;
end
bugsFolder = 'C:\Program Files\winbugs14\WinBUGS14';
[samples, stats] = matbugs(dataStruct, ...
fullfile(pwd, 'CHK_model.txt'), ...
'init', initStructs, ...
'view', 0, 'nburnin', 1000, 'nsamples', 5000, ...
'thin', 10, ...
'monitorParams', {'theta', 'mu_theta', 'sigma_theta'}, ...
'Bugdir', bugsFolder);
# N t, thank you so much for your help. I don't know why I cannot response to you by using 'Post your answer". So I response here:
I download the matbugs.m from a website (http://code.google.com/p/matbugs/) and didn't touch this program at all.
When I run the Matlab code (as shown in my post), the computation goes to WinBUGS interface and stops there. Three WinBUGS windows pop up: the first one is WinBUGS Licence window, the second one is Log window, and the third one is Trap window.
1) here is the Log Window; .... data loaded compile(3) model compiled inits(1,
2) here is the Trap Wind ... (pc=764962F9H, fp=0028FB3CH) (pc=76496D39H, fp=0028FBB4H) (pc=764977C3H, fp=0028FC14H) (pc=76497BC9H, fp=0028FC24H) HostMenus.Loop [00003BDEH] .done BOOLEAN FALSE .f SET {0..5} .n INTEGER 0 .res INTEGER 0 .w HostWindows.Window NIL Kernel.Start [00002B8CH] .code PROCEDURE HostMenus.Loop
3) The program of matbugs.m is too long to post here, but I used exactly same program as this one http://code.google.com/p/matbugs/source/browse/trunk/matbugs.m
Thanks again for your time and for your advice!
Bo